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());

}

你可能感兴趣的:(Flex)