专栏首页kyle的专栏关于数组合并及对象去重的问题

关于数组合并及对象去重的问题

写这篇文章是源于群内的朋友的问题,今天早上,像往常一样摸鱼,发现一个妹子发群里问了一个问题。

事情的经过大概是这样的

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)
最终的输出结果也是我们想要的:
最后得到了一个赞

不过还是希望更好一点的解法,哈哈哈

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 二叉树的所有路径

    创建非子节点队列queue,与非子节点路径队列path。当队列queue中存在值时,依次将queue,path与出列,若当前元素无左右节点,则说明为子节点,则直...

    _kyle
  • 区域和检索 - 数组不可变

    给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。

    _kyle
  • 汇总区间

    返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的...

    _kyle
  • 「数据库」sql刷题(No.6)

    Hello 各位 ,我是公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。

    八点半的Bruce、D
  • Mybatis系列第7篇:各种查询详解

    Mybatis系列目标:从入门开始开始掌握一个高级开发所需要的Mybatis技能。

    路人甲Java
  • python中查看变量内存地址的方法

    本文实例讲述了python中查看变量内存地址的方法。分享给大家供大家参考。具体实现方法如下:

    py3study
  • WAF安全拦截绕过思路和手法

    注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

    WeiyiGeek
  • 详细分析Python可变对象和不可变对象

    在 Python 中一切都可以看作为对象。每个对象都有各自的 id, type 和 value。

    砸漏
  • Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款 360 主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影。

    信安之路
  • 浅谈python中的多线程和多进程(二)

    前文《浅谈python中的多线程和多进程》中我们分享过一个例子,就是分别利用python中的多线程和多进程来解决高运算量的任务,从中看出二者的一些区别。其中一点...

    一只羊

扫码关注云+社区

领取腾讯云代金券