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)代码>