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

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

js 對象數組中相同的key ,value值相加

js 對象數組中相同的key ,value值相加

達令說 2019-03-19 15:14:40
var arry= [    {key:'a',value:2},    {key:'a',value:2},    {key:'a',value:2},    {key:'b',value:8}]期望得到結果:var newArr =[    {key:'a',value:6},    {key:'b',value:8}]
查看完整描述

8 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

var array = [

    {key: 'a', value: 2},

    {key: 'a', value: 2},

    {key: 'a', value: 2},

    {key: 'b', value: 8}

];

var newArr = [{key:array[0].key, value: 0}];

array.forEach((item, index)=>{

    newArr.forEach((item2, index2) => {

        if (item.key == item2.key) {

            newArr[index2].value += item.value;

        } else {

            newArr.push(item);

        }

    })

});

console.log(newArr);


查看完整回答
反對 回復 2019-03-28
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

var arry= [

    {key:'a',value:2},

    {key:'a',value:2},

    {key:'a',value:2},

    {key:'b',value:8}

]


let result = {};

array.forEach(item => {

    if(result[item.key]){

        result[item.key] += item.value;

    }else{

        result[item.key] = item.value;

    }

})


let s = [];

for(let k in result){

    s.push({key:k,value:result[k]});

}


查看完整回答
反對 回復 2019-03-28
?
胡說叔叔

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

Array.prototype.reduce 了解一下。


array.reduce((resp, obj)=> {

    var originObj = resp.find(item => item.key === obj.key);

    if (originObj) {

        originObj.value+= obj.value;

    } else {

        resp.push(obj)

    }

    return resp;

}, [])


查看完整回答
反對 回復 2019-03-28
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

function keyPlusValue(arr) {

  const result = arr.reduce((obj, item) => {

    if (!obj[item.key]) {

      obj[item.key] = 0

    }

    obj[item.key] += item.value

    return obj

  }, {})

  return Object.keys(result).map(key => ({key: key, value: result[key]}))

}

console.log(keyPlusValue(arr))


查看完整回答
反對 回復 2019-03-28
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

這是我當時解決的方案


var arry =[

     {name:'a',value:2},

     {name:'a',value:2},

     {name:'a',value:2},

     {name:'b',value:8}

     

     ]

        var temp = {};var data=[];

        for(var i in arry) {

            var key= arry[i].name;

            if(temp[key]) {

                temp[key].value = temp[key].value + arry[i].value;

                temp[key].name = arry[i].name;

            } else {

                temp[key] = {};

                temp[key].value = arry[i].value;

                temp[key].name = arry[i].name;

            }

            

        }

        console.log(temp)


查看完整回答
反對 回復 2019-03-28
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

var newArr = [...arry.reduce((m, x) => m.set(x.key, (m.get(x.key) || 0) + x.value), new Map())]

  .map(([key, value]) => ({ key, value }))


查看完整回答
反對 回復 2019-03-28
?
猛跑小豬

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

var arry= [


        {key:'a',value:2},

        {key:'a',value:2},

        {key:'a',value:2},

        {key:'b',value:8}

    ]

    let target = [];

    let keysArr =[...new Set( arry.map(item=>item.key))]  ;


    keysArr.forEach(item=>{

       const  arr = arry.filter(keys=>keys.key == item);

       const sum = arr.reduce((a,b)=>a+b.value,0)

        target.push({

            key:item,

            value:sum

        })

    })

    console.log(  target )


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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