删除和重用数组索引

Deleting and reusing array indexes

本文关键字:数组 索引 删除      更新时间:2023-09-26

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

我通过调用myArray.push() 来添加

我使用delete myArray[102] 之类的东西删除索引

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

还是因为Javascript内存处理的某些方面,这是不切实际和毫无意义的?

我之所以删除而不是拼接,是因为我不想重新排列数组的索引;我使用它们来识别特定索引中的特定对象。我主要想问,是否有任何理由优化使用delete时产生的间隙。

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

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

正如你提到的,

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

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

但如果你使用拼接,

a.splice(2,1);

它会把[1, 2, 4]还给你。所以你不会发现任何洞。