在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
为真。
这会产生一个这样的数组,并不存在所有索引:
myArray =
{
[12] => 123,
[15] => 456,
[27] => 1789,
[39] => 623,
}
如果我现在想删除值&gt; 1000使用Array.splice()
:
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减少这些索引?我真的需要他们保持不变。
答案 0 :(得分:3)
您可以使用delete
代替splice
for (i = 0; i < myArray.length; i++)
{
if (i in myArray) //check if index exists
{
if (myArray[i] > 1000)
{
delete myArray[i]
}
}
}
答案 1 :(得分:1)
您可以将该特定索引设置为undefined
:
for (i = 0; i < myArray.length; i++)
{
if (i in myArray) //check if index exists
{
if (myArray[i] > 1000)
{
myArray[i]=undefined;
}
}
}
答案 2 :(得分:1)
我建议你使用javascript的Array.filter:
var newArray = array.filter(function(value) {
return value < 1000;
})