我需要对数组的第二个值求和并根据第一个值(年)对其进行分组。
这是我的数组:
dataArray = [[2020,140],[2020,145],[2020,90],[2021,88],[2021,12]];
这是我的功能:
var result = [];
dataArray.reduce(function(res, value) {
if (!res[value[0]]) {
res[value[0]] = [ value[0], 0 ];
dataArray.push(res[value[0]])
}
res[value[0]][1] += value[1];
return res;
}, {});
我需要这个结果:
dataArray = [[2020,375],[2021,100]]
但是我得到了奇怪的结果,我认为是基于先前值的总和。
有人能帮我吗?谢谢
你可以这样做
const
dataArray = [[2020,140],[2020,145],[2020,90],[2021,88],[2021,12]]
, result =
dataArray.reduce((sums,[year,value])=>
{
let sYear = sums.find(x=>x[0]===year)
if (!sYear) sums.push([year,value])
else sYear[1] += value
return sums
},[])
console.log( result )
.as-console-wrapper {max-height: 100%!important;top:0 }
或者:
const
dataArray = [[2020,140],[2020,145],[2020,90],[2021,88],[2021,12]]
, result2 =
Object.entries(
dataArray.reduce((sums,[year,value])=>
{
sums[year] = (sums[year] ?? 0) + value
return sums;
}, {}))
console.log( result2 )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句