我有一个名为“ 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的内容: 这种情况并不经常发生,在大多数情况下,新数组应该从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时,才执行顶部的代码,但这按预期工作。