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

我有一个数组:

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"]

本文翻译自 https://stackoverflow.com/questions/10265321/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 javascript arrays indices


相关文章:

php - 我需要一个具有2个动态值的查询

javascript - 空物体从无处传递道具

c++ - 使用纹理,法线和索引列表从VBO绘制OpenGL对象时出现问题

python - 根据索引列表更改列表元素

c++ - 有人可以解释一下“指数技巧”吗?

javascript - jQuery通过选择选项data-value设置标记位置

javascript - 扩展UL的过渡效果[关闭]

php - 从Google Maps Places api读取json文件(使用javascript或php)

javascript - 堆栈溢出信誉图的文档(Flot)

javascript - 如何将JSON转换为数组并在jQuery中循环?