我有两个数组
arr = [ aaa, xxx, aaa, xxx, aaa ];
foundIn = [ 1, 3 ];
如您所见,foundIn 具有我想要删除的 arr 索引号。如何使用 foundIn
中的索引值删除 arr 中的值The output being: newArr = [ aaa, aaa, aaa ];
这是我的问题的简化版本。
对此的任何帮助将不胜感激。
最佳答案
您可以利用原生 javascript .filter()
方法来解决此类问题。
var arr = ["aaa", "xxx", "aaa", "xxx", "aaa"];
var foundIn = [1, 3];
var res = arr.filter(function (eachElem, index) {
return foundIn.indexOf(index) == -1
})
console.log(res) // ["aaa", "aaa", "aaa"]
说明
回调将在调用此函数的每个循环中执行(在上面的示例中,它将在 arr
变量上使用)。
两个参数被传递到回调中。第一个是元素,第二个是索引。因为您需要索引
,所以您必须编写所有这两个参数,即使您没有使用第一个参数。
本期使用index
变量来判断foundIn
变量上是否存在(我们使用.indexOf()
) > 进行检查的方法)。如果不存在,则返回true
。因此,所有返回的元素都是 foundIn
中不存在的元素。
.indexOf()
返回搜索到的项目的索引,如果没有找到,则返回-1
。
如果你使用的是es6,可以简化代码:
var res = arr.filter((d, i) => foundIn.indexOf(i) == -1)
<小时/>
另请尝试这个工作示例:
var arr = ["aaa", "xxx", "aaa", "xxx", "aaa"];
var foundIn = [1, 3];
var res = arr.filter(function (eachElem, index) {
return foundIn.indexOf(index) == -1
})
document.write(JSON.stringify(res))
// ["aaa", "aaa", "aaa"]
关于javascript - 使用索引数组过滤另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39207676/