具有部分相似对象即a-b的两个数组之间的差异基于自定义属性

问题描述

如何找到具有部分相似对象的两个JavaScript数组之间的区别?

差异= A减去B

const firstList = [{ key: "aa",name:"a" },{ key: "bb",name:"b" },{ key: "cc",name:"c" }];
const secondList = [{ key: "dd",id: 1 },id: 2 }];

我想要类似const diff = firstList - secondList;

在这种情况下,diff需要按住[ { key: 'aa',name: 'a' },{ key: 'bb',name: 'b' } ]

解决方法

const firstList = [{ key: "aa",name:"a" },{ key: "bb",name:"b" },{ key: "cc",name:"c" }];
const secondList = [{ key: "dd",id: 1 },id: 2 }];

const diff = firstList.filter((first) => {
  return !secondList.some((second) => second.key === first.key);
});

diff; // [ { key: 'aa',name: 'a' },{ key: 'bb',name: 'b' } ]
,

您可以将Set用于第二个数组,并对第一数组进行过滤,以排除与第二个数组具有相同key的元素。

const
    firstList = [{ key: "aa" },{ key: "bb" },{ key: "cc" }],secondList = [{ key: "dd" },keys = new Set(secondList.map(({ key }) => key)),result = firstList.filter(({ key }) => !keys.has(key));

console.log(result);