首先值得一提的是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 ;
}
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
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