[as3学习] as3数组:Array
12.1 数组(Array)的介绍
ActionScript3中的数组(Array)是以非零整数为索引的稀疏数组(sparse array).所谓稀疏就是指数组元素可以是不同数据类型,不支持类型化数组(typed array).
12.1.1 访问数组元素
数组索引从0开始
12.1.2 数组的长度
ActionScript3的数组是可变长度数组,可以使用数组的length属性访问数组长度
1.使用length属性可以返回数组长度
2.向length属性赋值,将改变数组的长度,超出当前元素的部分会使用undefined作填充
3.向超出数组length值的索引赋值时,数组会自动增加长度,中间部分会用undefined作填充
4.向length属性赋值时,如果低于当前length值,则减少的数组索引将被自动删除
12.2 数组(Array)的基本操作
增、删、查、改、排序
12.2.1 查找:indexOf、lastIndexOf
查找元素,找到就返回索引位置,如果找不到,返回-1
indexOf 从左到右
lastIndexOf 从右到左
indexOf/lastIndexOf(查找元素[,查找起始位置])
查找时使用的是 === 全等于条件,不作数据类型自动转换,所以 "123"与123是不同的
12.2.2 在数组首尾新增元素:push、unshift
push,在数组尾部增加元素
unshift,在数组头部增加元素
push/unshift[元素1[,元素2,...元素n]]:uint
返回值:添加元素后数组的长度
12.2.3 删除数组首尾元素:pop、shift
pop,删除数组最后一个元素
shift,删除数组第一个元素
这两个函数均无参数
返回值:所删除的元素
12.2.4 在数组当中插入或者删除元素:灵活多变的splice
数组.splice(删除起始索引[,删除数量,插入元素1,插入元素2,...插入元素n])
1.从指定索引开始,删除指定数量的元素,并在原位置上插入新元素
数组.splice(删除起始索引,删除数量,插入元素1,插入元素2,...插入元素n)
删除起始索引可以为负数,即从结尾倒数第负数个元素开始向后删除,-1则为倒数第一个元素
2.删除指定起始点后的指定数量元素
数组.splice(删除起始索引,删除数量)
3.删除指定起始点后的所有元素
数组.splice(删除起始索引)
4.在数组某索引位后,插入元素
数组.splice(删除起始索引,0,插入元素1,插入元素2,...插入元素n)
返回值:被删除的元素
注意:splice会改变所操作的数组对象,如果只是想得到数组一段内容,请使用slice
12.2.5 获取数组中的部分元素:slice
数组.slice([获取起始索引,获取终止索引]):Array
起始和终止索引都可以使用负数
返回值:
1.查找到元素组成的新数组,数组元素包含起点索引元素,但不包括终止索引元素(即前一个)
2.只有获取起始索引时,返回从起始索引处到结尾所有元素的数组
3.不提供参数时,将生成原数组的一个浅复制
注意:当起始索引大于终止索引时,函数会函数一个空值,负数索引时特别容易出错
12.2.6 将多个元素或数组拼合成新的数组:concat
数组.slice([元素1,元素2,...元素n]):Array
与push一样,是在数组尾部追加数据
不同的是
1.push影响原始数组,concat不影响原始数组,而是返回一个新结果的数组对象
2.当追加的对象是数组时,push会直接添加,而concat会按元素顺序逐个加入到新数组中
3.不提供参数时,将生成原数组的一个浅复制
返回值:结果数组
12.2.7 数组的浅复制与深复制
浅复制就是说只是复制引用,操作对应对象时还会影响引用的对象。
一般调用数组的slice或concat函数时,不传入参数,都可以生成浅复制对象
深复制不是生成复制对象的一个副本,所有对返回对象的操作,都不会影响到原始对象,是完全复制。
深复制使用ByteArray类
var BA对象:ByteArray = new ByteArray();
BA对象.writeObject(源对象);
BA对象.position = 0;
var 备份对象:Array = BA对象.readObject() as Array;
12.2.8 排序:reverse、sort、sortOn(均会影响源数组)
数组.reverse():Array
reverse将数组倒序排序
返回值:排序后的新数组
sort([排序方式|比较函数]):Array
1.不提供参数时,将按默认的ascii排序规则排序
2.传入排序方式:排序方式其实就是Array类内置的一组常量
Array.CASEINSENSITIVE 值为1 ,大小写不敏感顺序排序,数字按从小到大
Array.DESCENDING 值为2 ,按字母倒序
Array.UNIQUESORT 值为4 ,必须唯一性排序,如果排序元素中有重复,结果将返回0(即放弃排序)
Array.RETURNINDEXEDARRAY 值为8 ,sort或sortOn函数排序后返回排序后的索引列表,保持原数组不变
Array.NUMERIC 值为16,强制sort和sortOn函数对数值采用从小到大排序,按数值排序时必须用此
排序方式可以用 | 分隔开作为一组参数传入sort或sortOn,也可以将对应值相加直接传入
3.比较函数
function 函数名(参数A:类型, 参数B:类型):int{
}
排序时,会自动匹配所有两个参数进行比较,
当返回值为1时,参数A对应元素排到参数B对应元素后
当返回值为0时,参数A与参数B位置保持不变
当返回值为-1时,参数B对应元素排到参数A对应元素前
sortOn("name"[,排序方式|比较函数]):Array
sortOn用于对复杂型数据数组进行排序
[详细请看书p211,此节笔记无法清晰记录]
12.3 操作数组每个元素:forEach、every、filter、map、some