带条件的数组求和:能否对数组中同一年份的元素值求和?
当然可以实现!这是数据处理里非常常见的分组求和需求,我给你举几个主流编程语言的实现例子,你可以根据自己的技术栈参考:
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
相关产品推荐
相关产品推荐

