![](/img/trans.png)
[英]How to compare and filter only unmatched arrays from two array of objects in es6
[英]Compare two Arrays with Objects and create new array with unmatched objects
我有以下两个Javascript数组:
const array1 = [{ id: 1}, { id: 2 }, { id: 3 }, { id: 4}];
const array2 = [{ id: 1}, { id: 3 }];
我现在想要一个新的数组array3
,它只包含那些不在array2
的对象,所以:
const array3 = [{ id: 2}, { id: 4 }];
我尝试了以下但它返回所有对象,当我将条件更改为===
它返回array2
的对象。
const array3 = array1.filter(entry1 => {
return array2.some(entry2 => entry1.id !== entry2.id);
});
任何想法? ES6欢迎
你可以反转比较(等于而不是不等)并返回some
的否定结果。
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }], array2 = [{ id: 1 }, { id: 3 }], array3 = array1.filter(entry1 => !array2.some(entry2 => entry1.id === entry2.id)); // ^ ^^^ console.log(array3);
Nina的答案是一个良好的开端,但会遗漏数组2中的任何独特元素。这扩展了她的答案,从每个数组中获取独特的元素,然后将它们组合起来:
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }], array2 = [{ id: 1 }, { id: 3 }, { id: 5 }], array3 = array1.filter(entry1 => !array2.some(entry2 => entry1.id === entry2.id)), array4 = array2.filter(entry1 => !array1.some(entry2 => entry1.id === entry2.id)), array5 = array3.concat(array4); console.log(array5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.