You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中按week_nb统计数组对象total_Value总和并存储

按周统计total_Value总和的实现方案

实现思路

  1. 用reduce遍历原数组,以week_nb为分组键,累加对应total_Value的总和,得到一个以周数为键、总和为值的映射对象。
  2. 将映射对象转换为目标格式的数组,每个元素包含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:35:24