数组中的大量空值意味着什么伤害?

时间:2010-12-07 08:23:27

标签: javascript

var arr = [];
arr[50] = 'foo';
arr[10000] = 'boo';

4 个答案:

答案 0 :(得分:4)

取决于实施。这样:

arr=[]
arr[1000]=1
arr[1000000000]=2
arr.sort()

将在Chrome上提供[1,2](不再需要使用两个元素对密集数组进行排序),但Firefox上出现allocation size overflow错误。

答案 1 :(得分:2)

完全没有害处。请确保在使用之前测试该值是否已定义。

答案 2 :(得分:2)

考虑使用“键/值数组”来处理这样的事情:

var arr = {};
arr[50] = 'foo';
arr[10000] = 'boo';

这样你就失去了检测数组长度的能力(arr.length将是未定义的),你可以使用不同类型的循环迭代它,但如果你不需要任何这些IMO,那就更好了。

答案 3 :(得分:1)

没有。大多数JavaScript实现将分配两个插槽(即,该数组将分配相同数量的内存,就好像它只有两个带有索引01的元素一样。)