写这篇文章是源于群内的朋友的问题,今天早上,像往常一样摸鱼,发现一个妹子发群里问了一个问题。
事情的经过大概是这样的
image.png总的来说就是后端给他返回了一个对象,对象内有2个数组,2个数组中的内容不一样,但是有相同的id,他需要把们合并到一个数组中,并且保留不重复的属性
简单的模拟一下妹子的数据结构,外层对象就不写了
const OrderNoList=[
{id:1,name:"aaa",},
{id:2,name:"bbb"},
{id:3,name:"ccc"},
]
const OrderProList=[
{id:1,time:"201800"},
{id:2,time:"201900",c:'333'},
{id:4,time:"201011"},
]
妹子最终的需求则是如下的格式
result=[
{id:1,name:"aaa",time:"201800"},
{id:2,name:"bbb",time:"201900",c:'333'},
{id:3,name:"ccc"},
{id:4,time:"201011"},
]
好了开始处理问题,其中使用到了数组的一些方法concat,push,filter,和for...of方法遍历对象
处理代码如下
const OrderNoList=[
{id:1,name:"aaa",},
{id:2,name:"bbb"},
{id:3,name:"ccc"},
]
const OrderProList=[
{id:1,time:"201800"},
{id:2,time:"201900",c:'333'},
{id:4,time:"201011"},
]
const obj = OrderNoList.concat(OrderProList);
let newObj = [];
for(item1 of obj){
let tmp = true;
let obj = {}
for(item2 of newObj){
if(item1.id == item2.id){
obj = {
...item1,
...item2
}
newObj = newObj.filter(curr=>curr.id != item1.id)
tmp = false;
}
}
if(tmp){
newObj.push(item1);
}else{
newObj.push(obj);
}
}
console.log(newObj)
最终的输出结果也是我们想要的:
最后得到了一个赞
不过还是希望更好一点的解法,哈哈哈
网友评论