我们可以使用 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'];
如何检查 remove
元素是否存在于 possi
中并过滤掉匹配的 possi
元素?
此外,在这种情况下,其他函数(例如 map
或 reduce
)是否是更好的解决方案?
最佳答案
如果您想删除 possi
中与数组 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']
]
关于javascript - 如何在 JavaScript 中使用过滤器从多维数组中删除多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456732/