我有以下两个 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);
关于javascript - 比较两个数组与对象并创建具有不匹配对象的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47642779/