问题描述
如何找到具有部分相似对象的两个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);