【问题标题】:Remove array items by indexes [duplicate]按索引删除数组项[重复]
【发布时间】:2021-05-01 17:31:21
【问题描述】:

我想通过索引数组从数组中删除多个项目。

const indexes = [0, 1, 3];
const values = [0, 1, 2, 3, 4, 5];

indexes.forEach((idx) => {
  values.splice(idx, 1);
});

console.log(values);

第二次循环时,由于数组较短,索引错误。

我应该怎么做才能得到[2, 4, 5]

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    您在迭代数组时从数组中删除项目,这是一个问题,因为在删除第一个元素后,它后面的所有元素都不再位于 indexes 指向的同一索引处。改为过滤数组:

    const indexes = [0, 1, 3];
    const values = [0, 1, 2, 3, 4, 5];
    
    const filtered = values.filter((_, i) => !indexes.includes(i));
    console.log(filtered);

    如果您必须改变现有数组,请向后退,以便首先删除最高索引:

    const indexes = [0, 1, 3];
    const values = [0, 1, 2, 3, 4, 5];
    
    for (const index of indexes.sort((a, b) => b - a)) {
      values.splice(index, 1);
    }
    
    console.log(values);

    【讨论】:

      猜你喜欢
      • 2014-12-02
      • 2010-12-25
      • 2018-05-07
      • 2016-04-22
      • 2015-07-27
      相关资源
      最近更新 更多