Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从两个数组中获取唯一的集合,该数组通过键的值删除第二个出现的项,而不是像Lodash uniqueBy那样删除第一个出现的项?_Javascript_Typescript_Lodash - Fatal编程技术网

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因为根据每个问题,输出必须考虑第一元素在匹配情况下的元素,并且在合并中,它将考虑来自第二数组的元素。