AS3中的数组Array,提供了一些删除数据的接口:
shift():* :删除首元素并返回删除的元素
pop():* :删除未元素并返回删除的元素
splice(startIndex:int, deleteCount:uint, ... values):Array :在指定位置插入或者删除指定个数的元素,这个方法比较特别,既可以插入也可以删除,插入或者删除的位置由startIndex指定,而到底是插入还是删除则由deleteCount指定,当deleteCount > 0的时候表示要删除指定的元素。具体可以参看API文档。
现在要介绍的这个方法也挺简单,具体的做法是这样:
var item:Object;//这是要删除的元素
var array:Array = [0, 0, 0, item, 0];
var index:int = array.indexOf(item);
if (index != -1)
{
array[index] = array[array.length - 1];
array.pop();
}
也就是把要删除的元素和最后一个元素位置对调一下,然后把最后一个元素pop()。
经过测试速度比直接用splice快大概85倍。
这个方法使用的前提是你的数组是无序的。