javascript - 防止数组在删除项目时更改索引号

标签 javascript arrays

在 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/

相关文章:

javascript - 获取数据属性onchange事件

arrays - Excel VBA - 创建工作表名称数组

c++ - 当您声明一个具有初始大小的数组时,它的元素最初是空字符串吗?

javascript - Ember fastboot 适用于 http api 主机,但不适用于 https

javascript - 在 Chrome 中通过 "new Date()"在 javascript 中创建日期对象不正确

arrays - 用于嵌入式集合的 MongoDB 首选模式。文档与数组

php - 查询100k记录表,执行时间超时

javascript - 我想要的是总和而不是字符串,怎么办?

javascript - 如何在导航到页面时完全刷新页面?

javascript - Facebook Messenger 复选框插件未呈现