怎么实现数组内对象code值相同的情况下poll值进行累加

var arr = [


    {"code": "a", "poll": 7},

    {"code": "b", "poll": 2},

    {"code": "c", "poll": 18},

    {"code": "a", "poll": 5},

    {"code": "c", "poll": 12},

    {"code": "a", "poll": 1}

];

var arr2 = [


{"code": "a", "poll": 13},

{"code": "b", "poll": 2},

{"code": "c", "poll": 30}

];

如何实现arr → 到arr1 的转变,且code值 不仅仅为 a b c 也可能为 adsdsd dsdsd a223 任意值 如何实现 类似转变


胡子哥哥
浏览 445回答 3
3回答

跃然一笑

给你来一个不考虑性能的var arr = [  {"code": "a", "poll": 7},  {"code": "b", "poll": 2},  {"code": "c", "poll": 18},  {"code": "a", "poll": 5},  {"code": "c", "poll": 12},  {"code": "a", "poll": 1}];let arr1 = arr.sort((pre, next) => pre.code > next.code).reduce((pre, v) => {  let lastIndex = pre.length - 1;  if (lastIndex >= 0 && pre[lastIndex].code === v.code) {    pre[lastIndex].poll += v.poll;  } else {    pre.push(Object.assign({}, v));  }  return pre;}, []);console.log(arr1);再来个一次遍历的,以空间换时间。function pollAdd(arr) {  let res = [];  let tmp = {};  arr.forEach((v) => {    if (!tmp.hasOwnProperty(v.code)) {      tmp[v.code] = res.length;      return res.push(Object.assign({}, v));    }    res[tmp[v.code]].poll += v.poll;  });  return res;}

慕丝7291255

你这是js吧    var arr = [        {"code": "a", "poll": 7},        {"code": "b", "poll": 2},        {"code": "c", "poll": 18},        {"code": "a", "poll": 5},        {"code": "c", "poll": 12},        {"code": "a", "poll": 1}    ];    var newArr = [];    for (i in arr) {        if(typeof(newArr[arr[i].code]) == 'undefined'){            newArr[arr[i].code] = 0;        }        newArr[arr[i].code] += arr[i].poll;    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java