我一直在寻找在ActionScript 3中清除数组。
有些方法建议:array = [];
(内存泄漏?)
其他人会说:array.splice(0);
如果您有其他人,请分享。 哪一个效率更高?
谢谢。
答案 0 :(得分:29)
array.length = 0
或array.splice()
似乎最适合整体效果。
array.splice(0);
的执行速度将超过array.splice(array.length - 1, 1);
答案 1 :(得分:6)
对于包含100个元素的数组(以ms为单位的基准,所需的时间越少):
// best performance (benchmark: 1157)
array.length = 0;
// lower performance (benchmark: 1554)
array = [];
// even lower performance (benchmark: 3592)
array.splice(0);
答案 2 :(得分:2)
我想知道,为什么要以这种方式清除阵列?清除对该数组的所有引用将使其可用于垃圾回收。如果array = []
是array
的唯一引用,则array
会这样做。如果不是那么你可能不应该发表它(?)
另外,请注意`.Arrays接受字符串作为键。 splice和lenght都只对整数键进行操作,因此它们对String键没有影响。
btw。:array.splice(array.length - 1, 1);
相当于array.pop();
答案 3 :(得分:2)
array.pop()和array.splice(array.length - 1,1)之间存在一个关键区别,即pop将返回元素的值。清除阵列时,这对于方便的一个衬垫非常有用:
while(myArray.length > 0){
view.removeChild(myArray.pop());
}
答案 4 :(得分:1)
array.splice(0,array.length);
这对我来说一直都很好,但我没有机会通过探查器运行它