如何找到数组A中的所有值 - 其中键不在数组B中(有点像SQL Not In)。我不想比较整个数组,只是一个属性 - 但我确实希望使用lodash(或更简单)返回差异的所有字段
const arrayA = [
{ sku:"1", name:"one"},
{ sku:"2", name:"two"}
]
const arrayB = [
{ sku:"1", name:"One Product"},
{ sku:"2", name:"Two Product"},
{ sku:"3", name:"Three Product"}
]
结果应该是:
{ sku:"3", name:"Three Product"}
感谢您的时间。
答案 0 :(得分:1)
你也可以使用:
const arrayA = [
{ sku:"1", name:"one"},
{ sku:"2", name:"two"}
];
const arrayB = [
{ sku:"1", name:"One Product"},
{ sku:"2", name:"Two Product"},
{ sku:"3", name:"Three Product"}
];
let diff = _.differenceWith(arrayB, arrayA, (a, b) => _.isEqual(a.sku, b.sku) );
答案 1 :(得分:0)
你真的不需要lodash。 您需要的是过滤第二个数组并消除第一个数组中存在的所有元素。
const arrayA = [
{ sku:"1", name:"one"},
{ sku:"2", name:"two"}
]
const arrayB = [
{ sku:"1", name:"One Product"},
{ sku:"2", name:"Two Product"},
{ sku:"3", name:"Three Product"}
]
console.log(
// filter B such that we only leave items from B that are not in A
arrayB.filter(b =>
!arrayA.some(a => a.sku === b.sku)
)
)