首页 > 解决方案 > 从数组中删除元素的更好(更快)方法?

问题描述

我正在尝试根据索引数组从数组中删除元素以从数组中删除元素。

这是我的代码:

const array = [0, 1, 2, 3, 4, 5];
const indicesToRemove = [0, 2, 5];

for (let i = indicesToRemove.length; i--;) {
    array.splice(indicesToRemove[i], 1);
}

console.log(array);

结果:[1, 3, 4]

它似乎工作正常,但我想知道是否有更好/更快的方法来做同样的事情。

标签: javascript

解决方案


如果您可以将删除了这些元素的数组放入一个的变量名中,我会用filter它来过滤掉以下中的索引indiciesToRemove

const array = [0, 1, 2, 3, 4, 5];
const indicesToRemove = [0, 2, 5];

const filtered = array.filter((_, i) => !indicesToRemove.includes(i));

console.log(filtered);

为了降低计算复杂性,请改用 Set ,这样您只需迭代indiciesToRemove一次,而不是每次迭代:

const array = [0, 1, 2, 3, 4, 5];
const indicesToRemove = new Set([0, 2, 5]);

const filtered = array.filter((_, i) => !indicesToRemove.has(i));

console.log(filtered);


推荐阅读