JavaScript中按week_nb统计数组对象total_Value总和并存储
按周统计total_Value总和的实现方案
实现思路
- 用
reduce遍历原数组,以week_nb为分组键,累加对应total_Value的总和,得到一个以周数为键、总和为值的映射对象。 - 将映射对象转换为目标格式的数组,每个元素包含
week_number和SumOfTotale_value两个属性。
代码实现
// 示例原数组 const data = [ { "month": 9, "date": "2022-09-01T00:00:00", "week_nb": 35, "total_Value": 31.356, }, { "month": 9, "date": "2022-09-17T00:00:00", "week_nb": 36, "total_Value": 67.726, }, { "month": 9, "date": "2022-09-08T00:00:00", "week_nb": 35, "total_Value": 98.63, }, { "month": 9, "date": "2022-09-24T00:00:00", "week_nb": 36, "total_Value": 55.178, } ]; // 按周分组求和 const weekSumMap = data.reduce((acc, item) => { const week = item.week_nb; acc[week] = (acc[week] || 0) + item.total_Value; return acc; }, {}); // 转换为目标数组格式 const result = Object.entries(weekSumMap).map(([week, sum]) => ({ week_number: Number(week), SumOfTotale_value: sum })); console.log(result);
输出结果
执行代码后,result数组内容如下:
[ { week_number: 35, SumOfTotale_value: 129.986 }, { week_number: 36, SumOfTotale_value: 122.904 } ]
可选优化
如果需要控制总和的小数位数(比如保留3位),可修改map逻辑:
const result = Object.entries(weekSumMap).map(([week, sum]) => ({ week_number: Number(week), SumOfTotale_value: parseFloat(sum.toFixed(3)) }));
内容的提问来源于stack exchange,提问作者Red bad coder
相关产品推荐
相关产品推荐

