As3 - 如何有效地清除阵列?

时间:2010-02-10 14:55:31

标签: actionscript-3 flex flex3

我一直在寻找在ActionScript 3中清除数组。

有些方法建议:array = [];(内存泄漏?)

其他人会说:array.splice(0);

如果您有其他人,请分享。 哪一个效率更高?

谢谢。

5 个答案:

答案 0 :(得分:29)

array.length = 0array.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);

这对我来说一直都很好,但我没有机会通过探查器运行它