javascript - 比较二维数组与一维数组并删除匹配的条目 (JavaScript)

标签 javascript arrays

我有一个像这样的二维数组:

all = [
    [bla, bla, ID1, bla, bla],
    [bla, bla, ID2, bla, bla],
    [bla, bla, ID3, bla, bla],
    [bla, bla, ID4, bla, bla],
    [bla, bla, ID5, bla, bla],
    [bla, bla, ID6, bla, bla]
]

接下来,我有一个像这样的一维数组:

selected = [ID1, ID2, ID6]

我需要从数组 all 中删除 ID 值与数组 selected 中任何 ID 都不匹配的所有条目。从上面的例子中我会得到一个像这样的新数组:

reduced = [
    [bla, bla, ID1, bla, bla],
    [bla, bla, ID2, bla, bla],
    [bla, bla, ID6, bla, bla]
]

如何获得这样的数组?

感谢您的帮助。

最佳答案

您可以使用 Array.prototype.filter 一行

var reduced = all.filter(function (a) {return selected.indexOf(a[2]) !== -1;});

这只是意味着,如果all[i][2](ID col 中的值)位于所选数组中,则保留此条目。它构建了一个新的数组,因此所有选定不会受到此过程的影响。

使用循环进行相同的测试可能会稍微快一些,因为这意味着更少的函数开销

var reduced = [], i = 0;
for (; i<all.length; ++i)
    if (selected.indexOf(all[i][2]) !== -1)
        reduced[reduced.length] = all[i];

关于javascript - 比较二维数组与一维数组并删除匹配的条目 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259118/

相关文章:

javascript - 如何将对象数组和对象数组转换为对象数组

javascript - JS 只使用一个 id 而忽略其他

javascript - 异步等待和获取语法在 React 中不起作用

javascript - Nodejs Express - methodOverride 不适用于多部分/表单数据

c - C 语言的员工薪酬程序,带有数组和结构

javascript - 使用对象列表将 ID 数组映射到字符串数组

javascript - 使用 u2f-api.js 客户端测试

c# - 如何从 JavaScript/C# 生成宽度 CSS

javascript - 无需 for 循环 JavaScript 将数字转换为数组

java - if 语句中的哨兵号