我有一个像这样的二维数组:
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]
]
如何获得这样的数组?
感谢您的帮助。
答案 0 :(得分:2)
var reduced = all.filter(function (a) {return selected.indexOf(a[2]) !== -1;});
它只是意味着,如果all[i][2]
(来自ID col的值)在所选数组中,请保留此条目。它构建了一个新的数组,因此all
和selected
不受此过程的影响。
使用循环执行相同的测试可能会稍微快一些,因为它意味着更少的函数开销
var reduced = [], i = 0;
for (; i<all.length; ++i)
if (selected.indexOf(all[i][2]) !== -1)
reduced[reduced.length] = all[i];