为什么JavaScript数组索引不总是从零开始?

时间:2019-01-28 10:05:02

标签: javascript arrays

我有一个名为“ electronContainer”的数组。我使用delete语句删除所述数组的一个条目,而剩下一个稀疏数组。由于我需要从零开始的连续数组索引以进行后续操作,因此我想为数组重新索引。这是我尝试过的:

var compacted = [];
for(var i = 0; i < this.electronContainer.length; i++)
    if(i in this.electronContainer)
       compacted.push(this.electronContainer[i]);
this.electronContainer = compacted;

但是,有时会返回一个数组,该数组仍不能从零开始,如本示例所示。我在上面的代码之前和之后记录了electronicContainer的内容: Before and after of my function 这种情况并不经常发生,在大多数情况下,新数组应该从0开始,就应该这样做。。。这使我感到非常困惑,因为我正在创建一个新数组并将元素推入其中。

一些想法/解释将不胜感激:)谢谢!

更新#1:删除元素的代码

// Move the Electron and Hand over if at end
if (this.electronContainer[i].move(adaptiveSpeed, -self.height_offset, self.box.height + self.height_offset, self.fadeout)) {
    // If the electron was handed over, delete the instance
    deletedAnElectron = true;
    delete this.electronContainer[i];
 }

仅当deleteAnElectron为true时,才执行顶部的代码,但这按预期工作。

0 个答案:

没有答案