写这篇文章是源于群内的朋友的问题,今天早上,像往常一样摸鱼,发现一个妹子发群里问了一个问题。
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)
不过还是希望更好一点的解法,哈哈哈
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句