插入数组元素
可以使用 Array 类的三种方法(push()
、unshift()
和 splice()
)将元素插入数组。push()
方法用于
在数组末尾添加一个或多个元素。换言之,使用 push()
方法在数组中插入的最后一个元素将具有最大
索引号。unshift()
方法用于在数组开头插入一个或多个元素,并且始终在索引号 0 处插入。splice()
方法用于在数组中的指定索引处插入任意数目的项目。
下面的示例对所有三种方法进行了说明。它创建一个名为 planets
的数组,以便按照距离太阳的远近顺
序存储各个行星的名称。首先,调用 push()
方法以添加初始项 Mars
。接着,调用 unshift()
方法在
数组开头插入项 Mercury
。最后,调用 splice()
方法在 Mercury
之后和 Mars
之前插入项 Venus
和
Earth
。传递给 splice()
的第一个参数是整数 1,它用于指示从索引 1 处开始插入。传递给 splice
()
的第二个参数是整数 0,它表示不应删除任何项。传递给 splice()
的第三和第四个参数 Venus
和
Earth
为要插入的项。
var planets:Array = new Array();
planets.push("Mars"); // 数组内容:Mars
planets.unshift("Mercury"); // 数组内容:Mercury,Mars
planets.splice(1, 0, "Venus", "Earth");
trace(planets); // 数组内容:Mercury,Venus,Earth,Mars
push()
和 unshift()
方法均返回一个无符号整数,它们表示修改后的数组长度。在用于插入元素时,
splice()
方法返回空数组,这看上去也许有点奇怪,但考虑到 splice()
方法的多用途性,您便会觉得
它更有意义。通过使用 splice()
方法,不仅可以将元素插入到数组中,而且还可以从数组中删除元素。
用于删除元素时,splice()
方法将返回包含被删除元素的数组。
删除数组元素
可以使用 Array 类的三种方法(pop()
、shift()
和 splice()
)从数组中删除元素。pop()
方法用于
从数组末尾删除一个元素。换言之,它将删除位于最大索引号处的元素。shift()
方法用于从数组开头
删除一个元素,也就是说,它始终删除索引号 0 处的元素。splice()
方法既可用来插入元素,也可以
删除任意数目的元素,其操作的起始位置位于由发送到此方法的第一个参数指定的索引号处。
以下示例使用所有三种方法从数组中删除元素。它创建一个名为 oceans
的数组,以便存储较大水域的
名称。数组中的某些名称为湖泊的名称而非海洋的名称,因此需要将其删除。
首先,使用 splice()
方法删除项 Aral
和 Superior
,并插入项 Atlantic
和 Indian
。传递给
splice()
的第一个参数是整数 2,它表示应从列表中的第三个项(即索引 2 处)开始执行操作。第二
个参数 2 表示应删除两个项。其余两个参数 Atlantic
和 Indian
是要在索引 2 处插入的值。
然后,使用 pop()
方法删除数组中的最后一个元素 Huron
。最后,使用 shift()
方法删除数组中的第一
个项 Victoria
。
var oceans:Array = ["Victoria", "Pacific", "Aral", "Superior", "Indian", "Huron"];
oceans.splice(2, 2, "Arctic", "Atlantic"); // 替换 Aral 和 Superior
oceans.pop(); // 删除 Huron
oceans.shift(); // 删除 Victoria
trace(oceans); // 输出:Pacific,Arctic,Atlantic,Indian
pop()
和 shift()
方法均返回已删除的项。由于数组可以包含任意数据类型的值,因而返回值的数据类型
为 Object。splice()
方法将返回包含被删除值的数组。可以更改 oceans
数组示例,以使 splice()
调
用将此数组分配给新的数组变量,如以下示例所示:
var lakes:Array = oceans.splice(2, 2, "Arctic", "Atlantic");
trace(lakes); // 输出:Aral,Superior
您可能会遇到这样的代码,它在数组元素上使用 delete
运算符。delete
运算符用于将数组元素的值设置
为 undefined
,但它不会从数组中删除元素。例如,下面的代码在 oceans
数组的第三个元素上使用
delete
运算符,但此数组的长度仍然为 5:
var oceans:Array = ["Arctic", "Pacific", "Victoria", "Indian", "Atlantic"];
trace(oceans); // 输出:Arctic,Pacific,,Indian,Atlantic
delete oceans[2];
trace(oceans[2]); // 输出:undefined
trace(oceans.length); // 输出:5
可以使用数组的 length
属性截断数组。如果将数组的 length
属性设置为小于数组当前长度的值,则会截
断数组,在索引号高于 length
的新值减 1 处所存储的任何元素将被删除。例如,如果 oceans
数组的排序
是将所有有效项放在数组的开始处,则可以使用 length
属性删除数组末尾的项,如以下代码所示:
var oceans:Array = ["Arctic", "Pacific", "Victoria", "Aral", "Superior"];
oceans.length = 2;
trace(oceans); // 输出:Arctic,Pacific