0

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

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 值与数组中的任何 ID 都不匹配的所有条目selected。从上面的例子中,我会得到一个像这样的新数组:

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

我怎样才能得到这样的数组?

感谢您的帮助。

4

1 回答 1

2

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

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

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

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

var reduced = [], i = 0;
for (; i<all.length; ++i)
    if (selected.indexOf(all[i][2]) !== -1)
        reduced[reduced.length] = all[i];
于 2013-01-10T13:40:38.077 回答