亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

合并兩個對象數組中指定 key 的值

合并兩個對象數組中指定 key 的值

躍然一笑 2019-03-13 18:21:39
如題,有兩個對象數組,arr1 和 arr2var arr1 = [    {      cid: 1,      name: 'A',      goods: [        { gid: 11, gname: 'a', cid: 1, count: 1 },        { gid: 12, gname: 'b', cid: 1 },        { gid: 13, gname: 'c', cid: 1 }      ]    },    {      cid: 2,      name: 'B',      goods: [        { gid: 14, gname: 'd', cid: 2, count: 2 }      ]    },    {      cid: 3,      name: 'C',      goods: []    },    {      cid: 4,      name: 'D',      goods: []    }  ]var arr2 = [    { gid: 11, gname: 'a', cid: 1, count: 3 },    { gid: 14, gname: 'd', cid: 2, count: 1 }  ]想把相同 gid 中的 count 進行累加,形成一個新的數組,最終得到如下效果:(PS:arr 中的 gid 一定是 arr1 已有的,因此不用考慮往空 goods 數組中插入對象的情況)var arr3 = [    {      cid: 1,      name: 'A',      goods: [        { gid: 11, gname: 'a', cid: 1, count: 4 },        { gid: 12, gname: 'b', cid: 1 },        { gid: 13, gname: 'c', cid: 1 }      ]    },    {      cid: 2,      name: 'B',      goods: [        { gid: 14, gname: 'd', cid: 2, count: 3 }      ]    },    {      cid: 3,      name: 'C',      goods: []    },    {      cid: 4,      name: 'D',      goods: []    }  ]
查看完整描述

2 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

let getMap = (arr, key) => arr.map(a => a[key]);


let cidMap = getMap(arr1, 'cid');


arr2.forEach(item => {

      let goods = arr1[cidMap.indexOf(item['cid'])]['goods'];

      let goodsMap = getMap(goods, 'gid');

      // 手機碼字,忘了 goods 的操作會不會影響原來的數組……

      // 題主自行試一下吧

      arr1[cidMap.indexOf(item['cid'])]['goods']

             [goodsMap.indexOf(item['gid'])]

             ['count'] += item['count'];

});


查看完整回答
反對 回復 2019-03-18
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

 arr1.forEach(a=>{

        a.goods=a.goods.map(v=>{

            var index=arr2.findIndex(c=>c.gid===v.gid)

            if(index>=0){

                v.count+=arr2[index].count

            }

            return !v.count?{gid:v.gid,gname:v.gname}:{gid:v.gid,gname:v.gname,count:v.count}

        })

    })


查看完整回答
反對 回復 2019-03-18
  • 2 回答
  • 0 關注
  • 746 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號