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

带条件的数组求和:能否对数组中同一年份的元素值求和?

当然可以实现!这是数据处理里非常常见的分组求和需求,我给你举几个主流编程语言的实现例子,你可以根据自己的技术栈参考:

JavaScript 实现示例

假设你的数组是包含年份和对应数值的对象数组,我们可以用reduce方法快速完成分组求和:

// 示例输入数组
const data = [
  { year: 2022, value: 100 },
  { year: 2023, value: 200 },
  { year: 2022, value: 150 },
  { year: 2023, value: 50 }
];

// 按年份分组求和
const sumByYear = data.reduce((acc, item) => {
  // 初始化对应年份的累加值(如果不存在的话)
  acc[item.year] = (acc[item.year] || 0) + item.value;
  return acc;
}, {});

console.log(sumByYear); // 输出: { 2022: 250, 2023: 250 }
Python 实现示例

Python里可以用普通字典或者collections.defaultdict来实现,逻辑同样清晰:

# 示例输入数组
data = [
    {"year": 2022, "value": 100},
    {"year": 2023, "value": 200},
    {"year": 2022, "value": 150},
    {"year": 2023, "value": 50}
]

# 方法1:普通字典实现
sum_by_year = {}
for item in data:
    year = item["year"]
    sum_by_year[year] = sum_by_year.get(year, 0) + item["value"]

print(sum_by_year)  # 输出: {2022: 250, 2023: 250}

# 方法2:用defaultdict简化代码
from collections import defaultdict

sum_by_year = defaultdict(int)
for item in data:
    sum_by_year[item["year"]] += item["value"]

print(dict(sum_by_year))  # 输出同样结果

注意事项

如果你的数组结构和示例不同(比如年份是字符串格式、数值字段名不是value),只需要调整代码中对应的字段名或类型转换逻辑即可,核心思路都是按年份作为分组键,对同组的数值进行累加。

内容的提问来源于stack exchange,提问作者Nirina-aj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:59:49