快速删除数组项
如果你不需要任何特定顺序的数组,与 splice()
相比,pop()
的一个小技巧将为你提供巨大的性能提升。
当你使用数组时,该数组中后续元素的索引需要减少 1.如果数组很大并且要删除的对象更接近该数组的开头,则此进程可能会占用大量时间。
如果你不关心数组中元素的顺序,则可以使用从数组末尾开始的项目替换要删除的项目。这样,数组中所有其他项的索引保持不变,并且随着数组长度的增长,进程的性能不会下降。
例:
function slowRemove(list:Array, item:*):void {
var index:int = list.indexOf(item);
if (index >= 0) list.splice(index, 1);
}
function fastRemove(list:Array, item:*):void {
var index:int = list.indexOf(item);
if (index >= 0) {
if (index === list.length - 1) list.pop();
else {
// Replace item to delete with last item.
list[index] = list.pop();
}
}
}