将两个Arrays与Objects进行比较,并使用不匹配的对象创建新数组

Max*_*hke 2 javascript arrays ecmascript-6

我有以下两个Javascript数组:

const array1 = [{ id: 1}, { id: 2 }, { id: 3 }, { id: 4}];
const array2 = [{ id: 1}, { id: 3 }];
Run Code Online (Sandbox Code Playgroud)

我现在想要一个array3只包含尚未包含的对象的新数组array2,所以:

const array3 = [{ id: 2}, { id: 4 }];
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但它返回所有对象,当我将条件更改为===它时返回对象array2.

const array3 = array1.filter(entry1 => {
  return array2.some(entry2 => entry1.id !== entry2.id);
});
Run Code Online (Sandbox Code Playgroud)

任何的想法?ES6欢迎

Nin*_*olz 7

您可以反转比较(等于而不是等于)并返回否定的结果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);
Run Code Online (Sandbox Code Playgroud)