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

JavaScript中按行累加键值对数值的实现方法

按行累加数组对象数值的解决方案

没问题,我来帮你搞定这个需求!你需要遍历数组里的每个对象,把对象内的数字值逐一累加,最后把结果存储下来对吧?下面我用JavaScript给出两种实用的实现方式,你可以根据自己的场景选择:

通用方案(适配任意数字键)

如果你的对象里的数字键不固定(比如后续可能新增其他数字类型的键),这种通用方法最稳妥:

首先假设你的原始数组是这样的:

const data = [
  {20: 24, 30: 37, 40: 17, 50: 16, 60: 5, 70: 2, day: "1"},
  {20: 12, 30: 25, 40: 19, 50: 8, 60: 3, 70: 1, day: "2"},
  // 更多对象项...
];

方式1:给每个对象添加累加结果字段

这种方式会保留原数据,同时在每个对象里新增一个total字段存储累加值:

const dataWithTotals = data.map(item => {
  // 筛选出所有数字类型的值,排除day这类非数字字段
  const numericValues = Object.values(item).filter(val => typeof val === 'number');
  // 用reduce计算总和,初始值设为0避免空数组报错
  const total = numericValues.reduce((accumulator, current) => accumulator + current, 0);
  // 返回包含原数据和total的新对象(不修改原数组)
  return {...item, total};
});

执行后,dataWithTotals里的每个对象会变成这样:

{20: 24, 30: 37, 40: 17, 50: 16, 60: 5, 70: 2, day: "1", total: 101}

方式2:单独收集所有累加结果

如果你只需要所有行的累加值组成的数组,可以这样写:

const totalArray = data.map(item => {
  return Object.values(item)
    .filter(val => typeof val === 'number')
    .reduce((sum, num) => sum + num, 0);
});

执行后totalArray会是[101, 68, ...]这样的纯数值数组。

固定键的高效方案

如果你的对象里的数字键是固定的(比如永远是20、30、40、50、60、70这几个),直接指定键累加会更高效:

const dataWithTotals = data.map(item => {
  const total = item[20] + item[30] + item[40] + item[50] + item[60] + item[70];
  return {...item, total};
});

这种方式不需要遍历所有值,性能更好,适合键固定的场景。

内容的提问来源于stack exchange,提问作者S.Diksha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:08:03