javascript - 从JavaScript数组中删除索引数组

原文 标签 javascript arrays indices

我有一个数组:

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']


并且我有一个要删除的索引数组:

var remove = [1, 3, 5]


这样的结果是:

arr ==== ['A', 'C', 'E', 'G']


我无法通过循环拼接来做到这一点:

// WRONG
for (i = 0, l = remove.length; i < l; i++) {
    arr.splice(remove[i]);
}


因为在每次迭代之后,每个元素的索引都已更改。

那我该怎么做呢?

最佳答案

> arr.filter(function(x,i){return remove.indexOf(i)==-1})
["A", "C", "E", "G"]


为了提高效率,请先将remove转换为对象/哈希表,如下所示:

var removeTable = {}
remove.forEach(function(x){removeTable[x]=true})

> arr.filter(function(x,i){return removeTable[i]})
["A", "C", "E", "G"]

相关文章:

javascript - 更精确的顺时针顶点排序

javascript - JavaScript从十六进制获取alpha值

javascript - 在JavaScript ES6中将对象用作索引数组是一种好模式吗?

matlab - 查找矩阵中不同值的行索引

python - Python高级模块化算术算法

javascript - Chrome扩展程序可加载页面并注入代码

javascript - 仅通过数学运算即可将值从0-> 1或1-> 0更改

python - 为什么此解决方案不会陷入无限循环?

javascript - 如何连接两个数组的值以及它们之间的一些html代码?

python - 通过Python中的索引列表访问Matrix的元素,以将max(val,0.5)应用于每个值,而无需for循环