我刚看了一眼:
http://jsperf.com/array-destroy/32
我不明白第一个怎么样:
arr.length = 0;
可以慢于:
while (arr.length > 0) {
arr.shift();
}
有人可以链接/解释原因吗?
答案 0 :(得分:14)
在测试设置中,会创建一个大型数组。一旦测试开始,阵列就会被清空,测试会自行重复。但是,每次首次运行测试后,阵列已经为空。要准确执行此测试,您必须每次都创建一个新数组。 试试这个:
http://jsperf.com/array-destroy/67
我修改了测试以每次返回一个新数组。结果如预期。 splice
和length
是最快的,因为它们会在没有循环的情况下立即修改数组的长度。
答案 1 :(得分:2)
使用pop()
时,数据中的最后一个元素将被删除。
使用shift()
时,将删除第一个数组,并重新索引所有其余元素。阵列越大,所需的时间就越长。