两个数组对象怎么根据其中某一个属性值是否相等合并为一个数组对象?

两个数组对象arr1和arr2
var arr1 = [

{id:1,name:'a'},
{id:2,name:'b'},
{id:3,name:'c'}

]
var arr2 = [

{id:1,cid:1,name:'aa'},
{id:2,cid:1,name:'bb'},
{id:3,cid:2,name:'cc'}

]
怎么根据id和cid是否相等合并为一个数组对象?
结果:(希望得到)
arr=[

{id:1,
name:'a',
data:[{id:1,cid:1,name:'aa'},
    {id:2,cid:1,name:'bb'}]
},
{id:2,
name:'b',
data:[{id:3,cid:2,name:'cc'}]
},
{id:3,
name:'c',
data:[]
}

]
请教大佬,这种应该怎么做?

已解决 悬赏分:20 - 解决时间 2021-11-27 15:08
反对 0举报 0 收藏 0

回答1

最佳
  • @

    reduce大法好

    let s = arr1.reduce((a, item) => {  
      let obj = {  
        ...item,  
        data: []  
      }  
      arr2.forEach(i => i.cid === item.id && obj.data.push(i))  
      a.push(obj)  
      return a  
    }, [])  
    console.log(s)
    支持 0 反对 0 举报
    2021-11-27 10:59