Javascript 如何从两个数组中获取唯一的集合,该数组通过键的值删除第二个出现的项,而不是像Lodash uniqueBy那样删除第一个出现的项?
所以,如果我有两个数组Javascript 如何从两个数组中获取唯一的集合,该数组通过键的值删除第二个出现的项,而不是像Lodash uniqueBy那样删除第一个出现的项?,javascript,typescript,lodash,Javascript,Typescript,Lodash,所以,如果我有两个数组 const arr1 = [ { id: 1: newBid: true } ]; const arr2 = [ { id: 1, newBid: false }, { id: 2, newBid: false } ]; 我想得到一个这样的数组 [ { id: 1, newBid: false }, { id: 2, newBid: false } ] 但是。。。我希望{id:1,newid:true}来自arr1,而不是arr2 我使用的是Lodash uniqB
const arr1 = [ { id: 1: newBid: true } ];
const arr2 = [ { id: 1, newBid: false }, { id: 2, newBid: false } ];
我想得到一个这样的数组
[ { id: 1, newBid: false }, { id: 2, newBid: false } ]
但是。。。我希望{id:1,newid:true}来自arr1,而不是arr2
我使用的是Lodash uniqByarr1,arr2,['id'],但它删除了第一个实例,而不是第二个,我发现使用对象作为贴图是处理此类问题的最简单方法
const arr1 = [ { id: 1, newBid: true } ];
const arr2 = [ { id: 1, newBid: false }, { id: 2, newBid: false } ];
const map = {};
function execute(array) {
for(let i = 0; i < array.length; i++) {
const item = array[i];
map[item.id] = item;
}
}
execute(arr1);
execute(arr2);
console.log(Object.values(map))
您应该使用mergeWith函数
常数arr1=[{
id:1,
纽比德:是的
}];
常数arr2=[{
id:1,
纽比德:错
}, {
id:2,
纽比德:错
}];
函数customizerfirstValue,secondValue{
初始值
返回第一个值;
其他的
返回第二个值;
}
console.log\u0.mergeWitharr1、arr2、定制器;
如果在对uniqBy的调用中交换arr1和arr2,会发生什么情况?是否可以概括逻辑,在arr1和arr2之间进行选择,或者反之亦然?您希望newBid:从第二次出现时为false,但从第一次出现时为full object?@GalacticCowboy,您这样称呼它。谢谢为什么不呢,arr1@JoeWarner因为根据每个问题,输出必须考虑第一元素在匹配情况下的元素,并且在合并中,它将考虑来自第二数组的元素。