as3中數組的一些用法

首先值得一提的是AS3的 Array 有了像 String 一樣的 indexOf() 和 lastIndexOf() 。另外增加了幾個很有用的 Method。

every(callback:Function, thisObject:* = null):Boolean
檢測是否數組所有元素都滿足 callback 方法指定的條件。

some(callback:Function, thisObject:* = null):Boolean
檢測數組中是否有元素滿足 callback 方法指定的條件。

filter(callback:Function, thisObject:* = null):Array
根據 callback 方法指定的條件過濾數組,返回由符合條件的元素組成的新數組

map(callback:Function, thisObject:* = null):Array
數組的每一個元素執行 callback 方法,返回由對應的結果組成的新數組

forEach(callback:Function, thisObject:* = null):void
數組的每一個元素執行 callback 方法,不返回任何值

第二個參數 thisObject 是第一個參數 callback 的執行範圍,即方法內部的 this ,一般不需指定。

callback 的參數也都是一樣的
function callback(item:*, index:int, array:Array)
item 就是數組的每一個元素,如果數組元素類型統一就指明該類型,否則用 * 。index是數組當前元素的索引,array是操作的數組。參數名稱可以任意起。如果只使用第一個參數這些方法都不改變原數組,使用後兩個參數則可對原數組進行操作。不推薦這樣做。

程序代碼
public function TestArray(){
var arr1:Array = [1,3,5,7,9,11];
//是否所有元素是兩位數(false)
trace(arr1.every(isDoubleDigit));
//是否有兩位數的元素(true)
trace(arr1.some(isDoubleDigit));
//arr1數組元素執行doubleObject方法的返回值組成新的arr2數組
var arr2:Array = arr1.map(doubleObject);
//arr3是arr2中滿足 bigDouble 條件的元素組成的新數組
var arr3:Array = arr2.filter(bigDouble);
trace("arr1:",arr1);
trace("arr2 double :");
arr2.forEach(traceDouble);
trace("arr3 double :");
arr3.forEach(traceDouble);
//double方法使用了後兩個參數,直接修改了原數組
arr1.forEach(double);
trace("arr1:",arr1);
}
private function isDoubleDigit(n:int,i:int,a:Array):Boolean{
return n > 10;
}
private function doubleObject(n:int,i:int,a:Array):Object{
return {double:n * 2};
}
private function bigDouble(o:Object,i:int,a:Array):Boolean{
return o.double > 10;
}
private function traceDouble(o:Object,i:int,a:Array):void{
trace(o.double);
}
private function double(n:int,i:int,a:Array):Object{
a[i] *= 2;
}

輸出:

程序代碼
false
true
arr1: 1,3,5,7,9,11
arr2 double :
2
6
10
14
18
22
arr3 double :
14
18
22
arr1: 2,6,10,14,18,22
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章