javascript - 从另一个数组中的重复项中过滤掉一个数组

标签 javascript arrays ecmascript-6

给定这两个数组:

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/

相关文章:

JavaScript 缩短 GET 值

Java数组: Unable to store new values into an array

javascript - 迭代对象数组,并将每个对象保存到 MongoDB

javascript - 如何在显示标签列链接中打开弹出窗口

javascript - AngularJS 1.3 页面不会在 IE8 中加载

javascript - 导入大括号中的所有模式

javascript - 为什么 ES6 对象解构不适用于 native javascript 原型(prototype)?

javascript - 单击搜索图标时如何禁用背景?

arrays - 数组 VBA 中的用户定义对象

javascript - ES6 javascript继承