在 JavaScript 中,我有一个在 for 循环中填充的数组:
var myArray = new Array();
for (var i = 0; i < someOtherArray.length; i++)
{
var element = someOtherArray[i];
if (someCondition)
{
myArray[i] = element;
}
}
如您所见,myArray
会填充另一个数组中的索引和内容,但前提是 someCondition
为 true。
这会产生一个像这样的数组,其中并非所有索引都存在:
myArray =
{
[12] => 123,
[15] => 456,
[27] => 1789,
[39] => 623,
}
如果我现在想使用 Array.splice() 删除大于 1000 的值:
for (i = 0; i < myArray.length; i++)
{
if (i in myArray) //check if index exists
{
if (myArray[i] > 1000)
{
myArray.splice(i, 1); //delete 1 Item, start at index i
}
}
}
在此循环中,数组条目[27] => 1789
被删除,但高于27的索引递减1:
myArray =
{
[12] => 123,
[15] => 456,
[38] => 623
}
如何防止 JavaScript 减少这些索引?我真的需要它们保持不变。
最佳答案
您可以使用delete
代替splice
for (i = 0; i < myArray.length; i++)
{
if (i in myArray) //check if index exists
{
if (myArray[i] > 1000)
{
delete myArray[i]
}
}
}
关于javascript - 防止数组在删除项目时更改索引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22779693/