Javascript删除稀疏数组上的项并调整长度错误

Javascript删除稀疏数组上的项并调整长度错误,javascript,arrays,Javascript,Arrays,我有一个稀疏数组。 我使用delete array[id],我还想在删除后调整数组的长度。这是一个伪代码 .... deleted =0; ... if (condition) { delete array[id]; deleted++;} ... array.length-=deleted; 嗯。我不知道发生了什么,数组具有预期的长度,但是。。。它是空的! 你知道会发生什么吗?如果你真的想手动操作,而不关心项目的顺序,下面的步骤比splice快得多,但这会打乱你的顺序: array[id]

我有一个稀疏数组。 我使用delete array[id],我还想在删除后调整数组的长度。这是一个伪代码

....
deleted =0; 
...
if (condition) { delete array[id]; deleted++;}
...
array.length-=deleted;
嗯。我不知道发生了什么,数组具有预期的长度,但是。。。它是空的!
你知道会发生什么吗?

如果你真的想手动操作,而不关心项目的顺序,下面的步骤比splice快得多,但这会打乱你的顺序:

array[id] = array[array.length-1]; // copy last item to the index you want gone
array.pop(); // rremove the last item
数组的长度自动正确

如果你想维持秩序,就照虫族说的做,然后使用它

第一个参数是从何处开始的索引。第二个参数是删除的项目数


数组的长度也正确。

从稀疏数组中删除元素的正确方法是:

arr.forEach(elm,index){

//delete index element
delete arr[index]

}

这将删除元素,但保留相同的数组大小

您可能希望改用
array.prototype.splice()
arr.forEach(elm,index){

//delete index element
delete arr[index]

}