gpt4 book ai didi

javascript - 用数组连接 2 个对象并删除重复项 (js)

转载 作者:行者123 更新时间:2023-12-01 03:10:51 25 4
gpt4 key购买 nike

有 2 个数组:如下所示

1) 第一个数组

{day:mo, hours:[{id:1,color:grey},{id:2,color:grey},{id:3,color:grey},{id:4,color:grey}]}

2) 第二个数组

{day:mo, hours:[{id:1,color:white},{id:2,color:white},{id:3,color:white},{id:4,color:white},{id:5,color:white}]}

结果必须是

{day:mo, hours:[{id:1,color:grey},{id:2,color:grey},{id:3,color:grey},{id:4,color:grey},{id:5,color:white}]}

所以我需要从 2 个数组中删除与第一个相同的值,然后将其连接起来。

尝试做一些事情

clearArrFunc(arr1,arr2) {
// do something
for(var i in arr1){
console.log(arr1[i]);
for(var j in arr2) {
if(JSON.stringify(arr1[i].day) == JSON.stringify(arr2[j].day)) {
delete arr2[j] ;
}

}

}
// console.log(arr2);
return arr1.concat(arr2);

}

最佳答案

连接两个数组,然后从结果中消除重复的 id:

a = [{id:1,color:'grey'},{id:2,color:'grey'},{id:3,color:'grey'},{id:4,color:'grey'}]
b = [{id:1,color:'white'},{id:2,color:'white'},{id:3,color:'white'},{id:4,color:'white'},{id:5,color:'white'}]

result = a
.concat(b)
.filter((x, i, self) => self.findIndex(y => y.id === x.id) === i);

console.log(result)

一个不太简洁但更有效的选择是从第一个数组构建一个 id 集合,然后仅附加第二个数组中 id 不在集合中的元素:

a = [{id:1,color:'grey'},{id:2,color:'grey'},{id:3,color:'grey'},{id:4,color:'grey'}]
b = [{id:1,color:'white'},{id:2,color:'white'},{id:3,color:'white'},{id:4,color:'white'},{id:5,color:'white'}]

ids = new Set(a.map(x => x.id))
result = a.concat(b.filter(x => !ids.has(x.id)))

console.log(result)

关于javascript - 用数组连接 2 个对象并删除重复项 (js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45861811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com