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

如何给JavaScript对象数组添加累加count的sum键或更新count为累加值?

给对象数组添加累加求和字段或替换count为累加值

问题描述

我有如下格式的对象数组:

[{date: '01-01-2022' , count: 1},
 {date: '02-01-2022' , count: 2},
 {date: '05-01-2022' , count: 9}]

期望得到两种结果之一:
第一种(新增sum字段):

[{date: '01-01-2022' , count: 1 , sum: 1},
 {date: '02-01-2022' , count: 2 , sum: 3},
 {date: '05-01-2022' , count: 9 , sum: 12}]

第二种(替换count为累加值):

[{date: '01-01-2022' , count: 1},
 {date: '02-01-2022' , count: 3},
 {date: '05-01-2022' , count: 12}]

我能单独累加count数组:

let new_array = [];  
myarray.reduce( (prev, curr,i) =>  new_array[i] = prev + curr , 0 )
return (new_array);

但没法在原对象数组里实现这个功能,也不知道怎么给原对象添加累加后的键。

解决方案

方案1:新增sum字段(不修改原数组)

利用reduce遍历数组,维护累加值,每次生成包含sum字段的新对象:

const originalArray = [{date: '01-01-2022' , count: 1}, {date: '02-01-2022' , count: 2}, {date: '05-01-2022' , count: 9}];

const resultWithSum = originalArray.reduce((acc, curr) => {
  // 取上一个元素的sum值,初始为0
  const currentSum = (acc.length ? acc[acc.length - 1].sum : 0) + curr.count;
  // 复制原对象并添加sum字段,推入结果数组
  acc.push({ ...curr, sum: currentSum });
  return acc;
}, []);

console.log(resultWithSum);

方案2:替换count为累加值(不修改原数组)

同样通过reduce,将count替换为累加后的数值:

const originalArray = [{date: '01-01-2022' , count: 1}, {date: '02-01-2022' , count: 2}, {date: '05-01-2022' , count: 9}];

const resultWithCumulativeCount = originalArray.reduce((acc, curr) => {
  // 计算累加值
  const cumulative = (acc.length ? acc[acc.length - 1].count : 0) + curr.count;
  // 复制原对象并更新count,推入结果数组
  acc.push({ ...curr, count: cumulative });
  return acc;
}, []);

console.log(resultWithCumulativeCount);

补充说明

  • 上述代码均生成新数组,不会修改原数据,避免意外副作用。
  • 如果需要直接修改原数组,可以去掉对象展开语法,直接给原对象添加sum属性或修改count值,但不推荐这种操作,容易引发数据污染问题。

内容的提问来源于stack exchange,提问作者leonleprofessionnel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:01:35