javascript - 比较两个数组与对象并创建具有不匹配对象的新数组

标签 javascript arrays ecmascript-6

我有以下两个 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/

相关文章:

python - Numpy修改数组到位?

javascript 如何在循环内向数组的坐标添加其他属性,而不删除数组的现有属性

javascript - 对解构函数参数感到困惑

java - 为什么这个 lambda 不是一个单一对象?

javascript - 为什么这个 javascript 函数总是返回一个未定义的数组?

javascript - 如何将事件监听器添加到实例方法

javascript - 处理完所有文件后运行的 Babel 钩子(Hook)?

javascript - 如何使用 TDD 对此功能进行单元测试?

javascript - “Jest 在 react 应用程序上遇到意外的 token {”错误

javascript - jwplayer seek() 和 onTime() 播放视频片段