删除和重用数组索引

时间:2015-04-04 06:48:30

标签: javascript

在Javascript中,如果我有一个非常大的数组,myArray

我通过调用myArray.push()

添加它

我使用delete myArray[102]

之类删除索引

是否有一些好处或理由来创建一个单独的数组,如myArrayGaps,它保存myArray中的哪些索引没有被使用,这样如果有未使用的索引,我会通过定义一个来添加到数组中像myArray[102] = newValue;这样的特定索引,而不是调用.push()并累积未使用的索引?

或者由于Javascript内存处理的某些方面,这是不切实际和毫无意义的吗?

我删除而不是拼接的原因是因为我不想重新排序数组的索引;我正在使用它们来识别特定索引处的特定对象。我主要是询问是否有任何理由来优化我使用delete时所产生的差距。

1 个答案:

答案 0 :(得分:1)

使用delete array[index]删除数组中的属性会留下一个漏洞。

相反,您可以使用splice属性来删除该索引中的值并调整数组大小。

正如您所说,

var a = [1,2,3,4];
delete a[2];

如果您现在打印a,它将包含[1, 2, undefined × 1, 4]delete删除了元素,但没有重新索引数组/长度。

但如果你改用splice,

a.splice(2,1);

它会返回[1, 2, 4]。所以你不会找到任何漏洞。