AS3 about Array.splice()

今天在实现“从数组中删除一个元素”时,发现splice真是一个特别方便实用的好方法,可实现对数组

下摘自Adobe文档:

AS3 function splice(startIndex:int, deleteCount:uint, ... values):Array

给数组添加元素以及从数组中删除元素。此方法会修改数组但不制作副本。

注意:要在 Array 的子类中覆盖此方法,请使用 ...args 作为参数,如本例所示:

public override function splice(...args) {    // your statements here  } 

参数 startIndex:int — 一个整数,它指定数组中开始进行插入或删除的位置处的元素的索引。您可以用一个负整数来指定相对于数组结尾的位置(例如,-1 是数组的最后一个元素)。
deleteCount:uint — 一个整数,它指定要删除的元素数量。该数量包括 startIndex 参数中指定的元素。如果没有为 deleteCount 参数指定值,则该方法将删除从 startIndex 元素到数组中最后一个元素的所有值。如果该参数的值为 0,则不删除任何元素。
...values — 用逗号分隔的一个或多个值的可选列表或数组,此列表或数组将插入到此数组中由 startIndex 参数指定的位置。

返回 Array — 一个数组,包含从原始数组中删除的元素。 示例
下面的代码创建 Array 对象 vegetables,其中包含元素 [spinach, green pepper, cilantro, onion, avocado]。然后,使用参数 2 和 2 调用 splice() 方法,以将 cilantro 和 onion 赋予 spliced 数组。vegetables 数组中就包含 [spinach,green pepper,avocado]。再次调用 splice() 方法(使用参数 1、0 和 spliced 数组),以将 [cilantro,onion] 作为以下数组中的第二个元素:vegetables。 var vegetables:Array = new Array("spinach",                 "green pepper",                 "cilantro",                 "onion",                 "avocado");var spliced:Array = vegetables.splice(2, 2);trace(vegetables); // spinach,green pepper,avocadotrace(spliced);    // cilantro,onionvegetables.splice(1, 0, spliced);trace(vegetables); // spinach,cilantro,onion,green pepper,avocado 请注意,cilantro 和 onion 输出时好像 vegetables 有 5 个元素,但它实际上只有 4 个元素(其中第二个元素是一个包含两个元素的数组)。若要单独添加 cilantro 和 onion,可使用:

var vegetables:Array = new Array("spinach",                 "green pepper",                 "cilantro",                 "onion",                 "avocado");

  var spliced:Array = vegetables.splice(2, 2);

trace(vegetables); // spinach,green pepper,avocado

trace(spliced);         // cilantro,onion

vegetables.splice(1, 0, "cilantro", "onion"); trace(vegetables); // spinach,cilantro,onion,green pepper,avocado                                                                                                                        

与splice()相关的:

as3如何彻底删除数组中的一个对象

移除数组中的某个对象,比方说array数组索引号为i的对象,可以这样实现:

removeChild(array[i]);

array.splice(i, 1);

移除数组中的全部对象,要用循环一个个从显示列表中移除,因为是全部移除,不需要一个个从数组中删除了,最后将数组设为null就行了:

for(var i in array) {       removeChild(array[i]); }

array = null;

在数组元素上使用 delete 运算符

delete 运算符用于将数组元素的值设置为 undefined,但它不会从数组中删除元素。例如,下面的代码在 oceans 数组的第三个元素上使用 delete 运算符,但此数组的长度仍然为 5:

var oceans:Array = ["Arctic", "Pacific", "Victoria", "Indian","Atlantic"];

delete oceans[2];

trace(oceans); // 输出:Arctic,Pacific,,Indian,Atlantic

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

原文地址:https://www.cnblogs.com/regalys168/p/3581389.html