zoukankan      html  css  js  c++  java
  • 两个数组里面的对象元素根据相同的id合并到一个数组

    根据ID合并两个数组

    需求:两个数组,如果id相同则合并到一起,id不一样则添加

    let arr=[{id:1,name:'dylan'},{id:2,name:'kebi'}]
    let arr1=[{id:1,position:'ceo'},{id:3,position:'sales'}]
    let list=arr.reduce((pre,cur)=>{
      let target=pre.find(ee=>ee.id == cur.id)
      if(target){
        Object.assign(target,cur)
      }else{
        pre.push(cur)
      }
      return pre
    },arr1)
    console.log(list)  
    /**
    [
    { id: 1, position: 'ceo', name: 'dylan' },
    { id: 3, position: 'sales' },
    { id: 2, name: 'kebi' }
    ]
     * /
    

    解析:
    arr.reduce((pre,cur)=>{},arr1)
    arr1是初始值,pre是累计值,cur是当前传入的值,所以pre的初始值就是arr1,cur的初始值是arr的第一个元素
    find方法返回数组中第一个符合的元素,如果没有符合的返回undefined
    target的值就是判断下累计的数组里面有没有和当前元素id一样的,一样的话把pre里面的这个元素赋值给target,没有的话就赋值为undefined
    Object.assign方法拷贝cur对象里面的值到目标对象也就是target里面,也就是如果target对象里面有cur对象里面的属性就覆盖,如果没有就添加
    if...else...的意思就是如果在arr里面找到了id和arr1一样的就合并,没有找到的话就push添加进去
    最后返回新数组

  • 相关阅读:
    C#选择文件、选择文件夹、打开文件
    如何去掉数据库重复记录并且只保留一条记录
    SQL总结——存储过程
    SQL Server中的标识列
    c# 获取键盘的输入
    C# 中BindingSource 的用法
    WinForm timer 控件
    C#获得窗口控件句柄
    checkedListBox的使用
    c++从文件中读取特定字符串问题的总结
  • 原文地址:https://www.cnblogs.com/my466879168/p/13151500.html
Copyright © 2011-2022 走看看