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/

相关文章:

javascript - 在不更改对象 ID 的情况下更新嵌套对象数据

javascript - jQuery 视差/滚动事件性能

javascript - 动态创建的复选框未触发操作

javascript - 如何从指令调用子 Controller 函数

javascript - jQuery 或 Javascript 沿着隐藏元素(如果单击正文其他位置时可见)

javascript - jQuery 验证功能不起作用

javascript - 如何在 d3.js 中行走一棵树

javascript - 在 JavaScript DOM 中拆分节点内容 -

javascript - 修复了导航栏在回发时消失的问题

javascript - 由于 FIREFOX 6.0 中的 QUICK FIND 自动启动,键盘快捷键在网站上不起作用