javascript - 使用索引数组过滤另一个数组

标签 javascript jquery

我有两个数组

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/

相关文章:

jquery - 使用 AJAX 定期保存

javascript - 如何获取多个span的html内容并将值添加为class

javascript - Facebook Comments.Create 回调中的 ID 值

javascript - Redux 商店帮助 : Students and Schools

JavaScript 日期总是返回 "2015-11-1"而不是今天的日期

javascript - 动态添加图像链接

javascript - 在 javascript 中设置子字符串的样式

javascript - 我需要添加什么代码才能让这个 javascript 在文本末尾自动添加 3 个点?

javascript - 使用ajax从php文件获取随机数不会更新新结果

jquery - 在 JQuery 中恢复多个分离的元素