使用 Array 类可以访问和操作数组。Array 索引从零开始,这意味着数组中的第一个元素为 [0],第二个元素为 [1],依此类推。要创建 Array 对象,可以使用 new Array() 构造函数。Array() 还可以作为函数调用。此外,还可以使用数组访问 ([]) 运算符初始化数组或访问数组元素。
您可以在数组元素中存储各种各样的数据类型,包括数字、字符串、对象甚至是其他数组。您可以创建一个多维 数组,方法是创建一个索引数组,然后给它的每个元素分配不同的索引数组。这样的数组被视为是多维的,原因是它可用于表示表中的数据。
数组是稀疏数组,这意味着可能存在这样的情况:在索引 0 处有一个元素,在索引 5 处有另一个元素,而这两个元素之间的索引位置却是空的。在这种情况下,位置 1 至位置 4 的元素是未定义的,表示这些位置不存在元素,而不一定存在值为 undefined 的元素。
数组赋值是通过引用而不是通过值进行的。如果将一个数组变量赋值给另一个数组变量,则这两个变量引用同一个数组:
var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray; // Both array variables refer to the same array.
twoArray[0] = "z";
trace(oneArray); // Output: z,b,c.
请不要使用 Array 类创建关联数组(也称为哈希),关联数组是包含命名元素而不包含编号元素的数据结构。要创建关联数组,请使用 Object 类。虽然 ActionScript 允许使用 Array 类创建关联数组,但不能对关联数组使用 Array 类的任何方法或属性。
可以扩展 Array 类并覆盖或添加方法。但是,必须将子类指定为 dynamic,否则将无法在数组中存储数据。
公共属性
公共方法
方法 | 由以下参数定义 |
Array(...values) 允许创建包含指定元素的数组。 | Array |
Array(numElements:int = 0) 允许创建指定元素数量的数组。 | Array |
concat(...args) : Array 将参数中指定的元素与数组中的元素连接,并创建新的数组。 | Array |
every(callback:Function, thisObject:* = null) : Boolean 对数组中的每一项执行测试函数,直到获得对指定的函数返回 false 的项。 | Array |
filter(callback:Function, thisObject:* = null) : Array 对数组中的每一项执行测试函数,并构造一个新数组,其中的所有项都对指定的函数返回 true。 | Array |
forEach(callback:Function, thisObject:* = null) : void 对数组中的每一项执行函数。 | Array |
indexOf(searchElement:*, fromIndex:int = 0) : int 使用 strict equality (===) 运算符搜索数组中的项,并返回该项的索引位置。 | Array |
insertAt(index:int, element:*) : void 将一个单独的元素插入一个数组中。 | Array |
join(sep:*) : String 将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串。 | Array |
lastIndexOf(searchElement:*, fromIndex:int = 0x7fffffff) : int 使用全等运算符 (===) 搜索数组中的项(从最后一项开始向前搜索),并返回匹配项的索引位置。 | Array |
map(callback:Function, thisObject:* = null) : Array 对数组中的每一项执行函数并构造一个新数组,其中包含与原始数组中的每一项的函数结果相对应的项。 | Array |
pop() : * 删除数组中最后一个元素,并返回该元素的值。 | Array |
push(...args) : uint 将一个或多个元素添加到数组的结尾,并返回该数组的新长度。 | Array |
removeAt(index:int) : * 从数组中删除一个单独的元素。 | Array |
reverse() : Array 在当前位置倒转数组。 | Array |
shift() : * 删除数组中第一个元素,并返回该元素。 | Array |
slice(startIndex:int = 0, endIndex:int = 16777215) : Array 返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。 | Array |
some(callback:Function, thisObject:* = null) : Boolean 对数组中的每一项执行测试函数,直到获得返回 true 的项。 | Array |
sort(...args) : Array 对数组中的元素进行排序。 | Array |
sortOn(fieldName:Object, options:Object = null) : Array 根据数组中的一个或多个字段对数组中的元素进行排序。 | Array |
splice(startIndex:int, deleteCount:uint, ...values) : Array 给数组添加元素以及从数组中删除元素。 | Array |
toLocaleString() : String 返回一个字符串,它表示指定数组中的元素。 | Array |
toString() : String 返回一个字符串,它表示指定数组中的元素。 | Array |
unshift(...args) : uint 将一个或多个元素添加到数组的开头,并返回该数组的新长度。 | Array |
公共常量
常量 | 由以下参数定义 |
CASEINSENSITIVE : uint = 1 [静态] 指定 Array 类排序方法为不区分大小写的排序。 | Array |
DESCENDING : uint = 2 [静态] 指定 Array 类排序方法为降序排序。 | Array |
NUMERIC : uint = 16 [静态] 指定 Array 类排序方法为数值(而不是字符串)排序。 | Array |
RETURNINDEXEDARRAY : uint = 8 [静态] 指定排序返回的数组包含数组索引。 | Array |
UNIQUESORT : uint = 4 [静态] 指定 Array 类排序方法的唯一排序要求。 | Array |
属性详细信息
length属性
length:uint
语言版本:ActionScript 3.0
运行时版本:AIR 1.0, Flash Player 9, Flash Lite 4
指定数组中元素数量的非负整数。在向数组中添加新元素时,此属性会自动更新。当您给数组元素赋值(例如,my_array[index] = value)时,如果 index 是数字,而且 index+1 大于 length 属性,则 length 属性会更新为 index+1。
注意:如果您为 length 属性所赋的值小于现有长度,会将数组截断。
实现
public function get length():uint
public function set length(value:uint):void
示例
下面的代码创建一个 Array 对象 names,其中包含字符串元素 Bill。然后它使用 push() 方法添加另外一个字符串元素 Kyle。数组的长度由 length 属性确定,在使用 push() 之前是一个元素,在调用 push() 之后是两个元素。添加另外一个字符串 Jeff 以使 names 的长度变为三个元素。然后,两次调用 shift() 方法以删除 Bill 和 Kyle,从而使最终数组的 length 变为一。
var names:Array = new Array("Bill");
names.push("Kyle");
trace(names.length); // 2
names.push("Jeff");
trace(names.length); // 3
names.shift();
names.shift();
trace(names.length); // 1
构造函数详细信息
Array()构造函数
public function Array(...values)
语言版本:ActionScript 3.0
运行时版本:AIR 1.0, Flash Player 9, Flash Lite 4
允许创建包含指定元素的数组。您可以指定任何类型的值。数组中第一个元素的索引(或位置)始终为 0。
注意:此类显示了两个构造函数项,这是因为此构造函数接受的参数的类型和数量可变。根据传递的参数类型和数量的不同(由每一项详细定义),此构造函数具有不同的行为。ActionScript 3.0 不支持方法或构造函数重载。
参数
... values — 一个以逗号分隔的列表,包含一个或多个任意值。
注意:如果传递给 Array 构造函数的只有一个单数值参数,则认为该参数指定数组的 length 属性。
引发
RangeError — 该参数不是大于等于 0 的整数。
示例
下例创建一个新的 Array 对象,该对象初始长度为 3,并用字符串元素 one、two 和 three 填充数组,然后将这些元素转换为字符串。
package {
import flash.display.Sprite;
public class Array_Array_3 extends Sprite {
public function Array_Array_3() {
var myArr:Array = new Array("one", "two", "three");
trace(myArr.length); // 3
trace(myArr); // one,two,three
}
}
}
Array()构造函数
public function Array(numElements:int = 0)
语言版本:ActionScript 3.0
运行时版本:AIR 1.0, Flash Player 9, Flash Lite 4
允许创建指定元素数量的数组。如果不指定任何参数,则创建包含 0 个元素的数组。如果指定多个元素,则创建包含 numElements 个元素的数组。
注意:此类显示了两个构造函数方法项,这是因为此构造函数接受的参数的类型和数量可变。根据传递的参数类型和数量的不同(由每一项详细定义),此构造函数具有不同的行为。ActionScript 3.0 不支持方法或构造函数重载。
参数
numElements:int (default = 0) — 一个指定数组中元素数量的整数。
注意:如果传递给 Array 构造函数的只有一个单数值参数,则认为该参数指定数组的 length 属性。
引发
RangeError — 该参数不是大于等于 0 的整数。
示例
下面的示例创建 Array 对象 myArr,该对象没有参数且初始长度为 0:
package {
import flash.display.Sprite;
public class Array_Array extends Sprite {
public function Array_Array() {
var myArr:Array = new Array();
trace(myArr.length); // 0
}
}
}
下例创建一个 Array 对象,该对象包含 5 个初始元素,长度为 5,并用字符串 "one" 填充第一个元素,然后将字符串元素 "six" 添加到数组的末尾(使用 push() 方法):
package {
import flash.display.Sprite;
public class Array_Array_2 extends Sprite {
public function Array_Array_2() {
var myArr:Array = new Array(5);
trace(myArr.length); // 5
myArr[0] = "one";
myArr.push("six");
trace(myArr); // one,,,,,six
trace(myArr.length); // 6
}
}
}