在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ js 對(duì)象數(shù)組中相同的key ,value值相加

js 對(duì)象數(shù)組中相同的key ,value值相加

var arry= [
    {key:'a',value:2},
    {key:'a',value:2},
    {key:'a',value:2},
    {key:'b',value:8}
]

期望得到結(jié)果:

var newArr =[
    {key:'a',value:6},
    {key:'b',value: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;
}, [])
2017年9月7日 16:35
編輯回答
敢試

這基本跟剛才那個(gè)是一樣的邏輯啊 稍微改下不就行了??

var obj = {};
arr.forEach(function(value){
    var id = value.id,
        num = value.num ;
    if(obj.hasOwnProperty(id)){
       // var cur = obj[id].num;
       // obj[id].num = Math.max(cur, num) ;
       obj[id].num += num
    }else{
        obj[id] = {
            'id' : id,
            'num' : num
        }
    }
})
console.log(Object.values(obj))
2017年7月4日 20:13
編輯回答
哎呦喂

這是我當(dāng)時(shí)解決的方案

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)
2017年2月12日 01:50
編輯回答
醉淸風(fēng)
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);
2018年8月3日 03:47
編輯回答
獨(dú)特范
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))
2018年4月8日 20:26
編輯回答
晚風(fēng)眠
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]});
}
2017年3月15日 10:26
編輯回答
何蘇葉
var newArr = [...arry.reduce((m, x) => m.set(x.key, (m.get(x.key) || 0) + x.value), new Map())]
  .map(([key, value]) => ({ key, value }))
2018年7月31日 04:20