我有一个数组:
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
我有一个索引数组,我想删除它们:
var remove = [1, 3, 5]
所以结果是:
arr ==== ['A', 'C', 'E', 'G']
我不能在一个循环中用 splice 来做:
// 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 数组中移除索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265321/