我一直在寻找如何清空 ActionScript 3 中的数组。
一些方法建议使用:array = [];
(会有内存泄漏吗?)
其他方法会说:array.splice(0);
如果您有其他的方法,请分享一下。哪个更有效率呢?
谢谢。
我一直在寻找如何清空 ActionScript 3 中的数组。
一些方法建议使用:array = [];
(会有内存泄漏吗?)
其他方法会说:array.splice(0);
如果您有其他的方法,请分享一下。哪个更有效率呢?
谢谢。
array.length = 0
或array.splice()
在整体性能方面效果最佳。
array.splice(0)
的执行速度比array.splice(array.length - 1, 1)
快。
array = null;
会清除数组本身而不仅仅是清空它。这基本上和你执行 array = [];
的效果相同,之前的数组引用将丢失并可能被垃圾回收(这可能不是想要的结果)。 - Biro456array = new Array()
? - Gaston Flores对于包含100个元素的数组(以毫秒为单位进行基准测试,数值越小所需时间越短):
// best performance (benchmark: 1157)
array.length = 0;
// lower performance (benchmark: 1554)
array = [];
// even lower performance (benchmark: 3592)
array.splice(0);
array.pop()和array.splice(array.length - 1, 1)之间有一个关键区别,即pop将返回元素的值。这对于清空数组时的便捷一行代码非常有用,例如:
while(myArray.length > 0){
view.removeChild(myArray.pop());
}
array
是对array
的唯一引用,则array = []
会这样做。如果它不是,则可能不应该清空它(?)。array.splice(array.length - 1, 1);
等同于array.pop();
。array.splice(0,array.length);
这对我来说一直运作得相当不错,但我还没有机会通过分析器运行它。