[英]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
元素?
另外,在这种情况下,诸如map
或reduce
类的其他功能是否是更好的解决方案?
如果要删除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.