【发布时间】:2018-07-28 05:13:54
【问题描述】:
我想对数组的元素值求和,它们具有相同的年份。
var newData = [];
var data = new Array(['2013', 0], ['2013', 0],['2016', 15], ['2017', 2], ['2015', 1], ['2013', 0], ['2016', 12], ['2014', 0], ['2017', 3], ['2015', 1], ['2013', 21], ['2013', 2]);
var sum = data.reduce(function (a, b,i) {
if (b[0][i]==b[0][i+1]) {
return newData.push(b[0],a + b[1]);
}
}, 0);
console.log(newData);
//return to:
[
["2013",23],
["2014",0],
["2015",2],
["2016",27],
["2017",5]
]
有可能吗? 谢谢你的帮助
【问题讨论】:
-
为什么不将结果作为一个对象,其中键是年份和值 - 总和?
-
是在手机上写的,所以我不确定它是否有效。
let s=data.reduce ((o,e)=>(o[e[0]]=~~o[e[0]]+e[1],o),{}); Object.keys(s).map(e=>[e,s[e]]) -
是的,你说得对
标签: javascript arrays ecmascript-6 reduce