清空一个数组的新方法

在AS3里面,我们用的最多的容器就是Array和Vector了,作为一个容器,我们有一个最重要的一个功能就是需要清空。我们常用的方法就是:

array = [];

这个方法看起来挺简单,简洁,对不?

但考虑你有一段循环,需要每次循环都要获得一个空的容器,而且上次的计算结果不需要保留。如果使用这个方法的话,循环N次,就会产生N个需要被垃圾回收的数组。我们知道,AVM进行垃圾回收是有性能代价的,反复的new和置空的代价更是,那么我们有没有一个新的方法来清空一个现有的容器而不需要丢掉它呢。我们会想到使用容器的splice方法,可以使用如下:

array.splice(0,array.length);

但是这个代码看起来有点不直观,而且敲的键盘量有点多。我们也有另外一个替代方法,就是:

vector = vector.filter(
function(obj:Object, idx:int, vector:Vector.<Object>): Boolean{
return false;
}
);


但是这个方法效率比上面两种慢多了去了,完全不实用,那么有没有一种最好的方法呢?
答案是有的!!!
Ta da~~~~

array.length = 0;


神马?????length居然是可写的??
哈哈,震精了吧,看看array的API吧。
[quote]
指定数组中元素数量的非负整数。在向数组中添加新元素时,此属性会自动更新。当您给数组元素赋值(例如,my_array[index] = value)时,如果 index 是数字,而且 index+1 大于 length 属性,则 length 属性会更新为 index+1。
注意:如果您为 length 属性所赋的值小于现有长度,会将数组截断。
[/quote]

以上的方法翻译并转载自:http://jacksondunstan.com/articles/702

哈哈,这样就真相大白了吧!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值