给定这两个数组:
const array1 = [
{"id": 1, "color": "black"},
{"id": 2, "color": "white"},
{"id": 3, "color": "orange"}
];
const array2 = [
{"id": 2, "color": "white"},
{"id": 4, "color": "purple"}
];
如果在第二个数组中找到重复项,如何从第一个数组中删除重复项,即结果将是:
const filtered = [
{"id": 1, "color": "black"},
{"id": 3, "color": "orange"}
];
我的代码:
const filtered = array1.map(i => array2.filter(j => i["id"] !== j["id"]))
但是好像没用
最佳答案
为了使您的代码正常工作,您可以使用过滤器和 every
const array1 = [ {"id": 1, "color": "black"},{"id": 2, "color": "white"},{"id": 3, "color": "orange"}];
const array2 = [{"id": 2, "color": "white"},{"id": 4, "color": "purple"}];
const filtered = array1.filter(i => array2.every(j => i["id"] !== j["id"]))
console.log(filtered)
您可以使用 map 和过滤器
const array1 = [ {"id": 1, "color": "black"},{"id": 2, "color": "white"},{"id": 3, "color": "orange"}];
const array2 = [{"id": 2, "color": "white"},{"id": 4, "color": "purple"}];
let mapper = new Map(array2.map(v=> [v.id,v]))
const final = array1.filter(({id})=> !mapper.has(id))
console.log(final)
关于javascript - 从另一个数组中的重复项中过滤掉一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977985/