簡體   English   中英

如何在JavaScript中使用過濾器從多維數組中刪除多個元素?

[英]How to remove multiple elements from multidimensional array with filter in JavaScript?

我們可以使用以下filter函數從數組中過濾出單個值:

var possi = [
        ['1','2','3'], ['4','5','6'], ['7','8','9'], ['1','4','7'], 
        ['2','5','8'], ['3','6','9'], ['1','5','9'], ['3','5','7']
    ];

var remove = '1';

possi = possi.filter(function(p){
    return p.indexOf(remove) === -1;
});

結果是:

[ [ '4', '5', '6' ],
  [ '7', '8', '9' ],
  [ '2', '5', '8' ],
  [ '3', '6', '9' ],
  [ '3', '5', '7' ] ]

但是,如果我們有多個要刪除的元素,那就是,如果我們有:

var remove = ['1', '6'];

我們如何檢查possi是否存在每個remove元素並過濾出匹配的possi元素?

另外,在這種情況下,諸如mapreduce類的其他功能是否是更好的解決方案?

如果要刪除possi中與array remove任何元素匹配的所有數組,則可以將Array.prototype.filter()Array.prototype.some()結合使用:

 var possi = [ ['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['1', '4', '7'], ['2', '5', '8'], ['3', '6', '9'], ['1', '5', '9'], ['3', '5', '7'] ]; var remove = ['1', '6']; possi = possi.filter(function(p) { return !p.some(function(v) { return remove.indexOf(v) !== -1; }); }); console.log(possi); 

結果是:

[
  ['7', '8', '9'],
  ['2', '5', '8'],
  ['3', '5', '7']
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM