Javascript js:如何从二维数组中过滤出重复项?

Javascript js:如何从二维数组中过滤出重复项?,javascript,arrays,repeat,Javascript,Arrays,Repeat,有没有办法解决以下问题: 这是原始数据: var m = [["a", "b"], ["c", "d", "e"], ["f", "g", "h"]] var n = ["a","d","e", "h"] 我想得到数据: [["a"], ["d","e"], ["h"]] 我试过: function remove(arr, val) { arr.forEach(v => { var index = v.indexOf(val); if (in

有没有办法解决以下问题: 这是原始数据:

var m = [["a", "b"], ["c", "d", "e"], ["f", "g", "h"]]
var n = ["a","d","e", "h"]
我想得到数据:

[["a"], ["d","e"], ["h"]]
我试过:

function remove(arr, val) { 
    arr.forEach(v => {
        var index = v.indexOf(val); 
        if (index === -1) { 
            v.splice(index, 1);
        }
    });       
};
n.forEach(val=>{
    remove(m, val);
})
console.log(m)
但我失败了。。。。
是否有解决问题的方法???

您可以从数组末尾迭代并拼接非常用项

必须从末尾开始,因为如果从开始迭代,拼接(在本例中)会更改数组的长度和实际索引

var m=[[“a”、“b”]、[“c”、“d”、“e”]、[“f”、“g”、“h”],
n=[“a”、“d”、“e”、“h”];
m、 forEach(a=>{
var i=a.长度;
而(我--){
如果(!n.包括(a[i])){
a、 拼接(i,1);
}
}
});
控制台日志(m);//[“a”]、[“d”、“e”]、[“h”]

.as console wrapper{max height:100%!important;top:0;}
如果您对新数组没有问题,您可以通过
映射
过滤
m
来确定迭代的项是否包含在
n
中:

var m=[[“a”、“b”]、[“c”、“d”、“e”]、[“f”、“g”、“h”]
变量n=[“a”、“d”、“e”、“h”]
常数filteredM=m.map(
arr=>arr.filter(
项目=>n.包括(项目)
)
);
控制台日志(filteredM)
var m=[[“a”、“b”]、[“c”、“d”、“e”]、[“f”、“g”、“h”];
变量n=[“a”、“d”、“e”、“h”];
const newarr=m.map(val=>val.filter(element=>n.includes(element));
控制台日志(newarr)