3 回答
TA贡献1826条经验 获得超6个赞
给你来一个不考虑性能的
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;
}
TA贡献1859条经验 获得超6个赞
你这是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;
}
添加回答
举报