Flex与As3学习笔记之:Part 4 数组
一、 Array类
1.1创建数组
var arr:Array = new Array(3);
var arr2:Array = new Array(“ad”,”bd”,”dfaf”);
var arr3:Array = [“adf”,”fads”,”adaf”];
1.2插入数组元素:push()、unshift()、splice()
push(item) // 在数组末尾添加一个或多个元素,回操作后数组长度
unshift(item) // 在数组开头插入一个或多个元素,返回操作后数组长度
splice(索引位置,要替换的元素个数,新元素一,新元素二,...) // 返回被删除元素的数组
1.3删除数组元素:pop()、shift()、splice()、delete
pop() // 删除最后一个元素,返回已删除的项
shift() // 删除第一个元素,返回已删除的项
splice(索引位置,要替换的元素个数,新元素一,新元素二,...)
delete arr[i] // 将arr数组第3个元素设为undefined,但并不从数组中删除此元素
例:
var oceans:Array = [”珠江”,”北冰洋”,”黄河”,”长江”,”太平洋”];
var rivers:Array = oceans.splice(2,2,”淮海”);
则调用后oceans为[”珠江”,”北冰洋”, ”淮海”,”太平洋”]
rivers为[“黄河”,”长江”]
可以指定一个length来截断数组,如上面的oceans:
oceans.length=3;则 oceans只剩下前三个元素
1.4数组排序:reverse()、sort()、sortOn()
1.4.1、reverse() // 逆序
1.4.2、sort(option)
option可选项为下:
Array.CASEINSENSITIVE 不区分大小写
Array.DESCENDING 从大到小排
Array.UNIQUESORT 有相同项排序停止
Array.NUMERIC 按从小到大排
option还可以是一个自定义方法,按自定义的方式排序,以下为一个按英文姓氏排序的例:
例:
var names:Array = new Array(“John Smith”,”Jane Doe”,”Mike Jones”);
function orderLastName(a,b):int
{
var lastName:RegExp = /\b\S+$/;
var name1 = a.match(lastName);
var name2 = b.match(lastName);
if(name1<name2) return -1;
else if(name1>name2) return 1;
else return 0;
}
names.sort(orderLastName);
1.4.3、sortOn()方法:对关联数组按可索引序列排序
var poets:Array = new Array();
poets.push({name:”adf”,born:”112”});
poets.push({name:”ffd”,born:”43”});
poets.sortOn(“born”,Array.NUMERIC);
若为sortOn指定Array.RETURNINDEXEDARRAY常量,则可以返回一个排序后的新数组,而对原数组不改变。如:
var newArr:Array = poets.sortOn(“born”,Array.NUMERIC | Array.RETURNINDEXEDARRAY);
1.5数组连接与查询等:concat()、slice ()、toString()、join()
concat(“新元素一”,”新元素二”,”...”) // 返回添加新元素后的新数组
slice(2,5) // 返回第三到第五个元素的新数组
toString() // 返回数组以,分隔的串
join(“+”) // 返回串以”+”为分隔
1.6数组克隆:自定义clone()方法
可以用不带参数的concat()或slice()返回数组的浅表副本,但深度复制需要自定义函数,以为下一个深度复制的函数,用ByteArray序列化对象后完成复制:
import flash.utils.ByteArray;
function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return (myBA.readObject());
}