兩個數組里面的對象元素根據相同的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添加進去
最后返回新數組


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM