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

JS如何对包含日期属性的对象数组按年份聚合,求和对应数值属性

核心实现逻辑

整体分为两步完成:

  • 遍历原始数组,提取日期中的年份作为分组标识,累加同一年份的B字段值
  • 将分组后的年份和对应总和,转换为指定结构的新数组

JavaScript 实现

const AA = [
  {A: '2016-01-01', B: 12},
  {A: '2016-02-01', B: 122},
  {A: '2017-03-01', B: 162},
  // 剩余原始数据
]

// 按年份累加B值
const yearMap = AA.reduce((result, current) => {
  const year = current.A.slice(0, 4)
  result[year] = (result[year] || 0) + current.B
  return result
}, {})

// 生成目标格式数组
const newAA = Object.keys(yearMap).map(year => ({
  A: `${year}-01-01`,
  B: yearMap[year]
}))

Python 实现

如果确定日期格式固定为YYYY-MM-DD,可以直接用字符串切片提取年份:

AA = [
    {"A": "2016-01-01", "B": 12},
    {"A": "2016-02-01", "B": 122},
    {"A": "2017-03-01", "B": 162},
    # 剩余原始数据
]

year_sum = {}
for item in AA:
    year = item["A"][:4]
    year_sum[year] = year_sum.get(year, 0) + item["B"]

newAA = [{"A": f"{year}-01-01", "B": sum_val} for year, sum_val in year_sum.items()]

如果日期格式存在波动,建议用日期解析工具提取年份,更稳妥:

from datetime import datetime

AA = [
    {"A": "2016-01-01", "B": 12},
    {"A": "2016-02-01", "B": 122},
    # 剩余原始数据
]

year_sum = {}
for item in AA:
    # 按实际日期格式调整strptime的第二个参数
    date = datetime.strptime(item["A"], "%Y-%m-%d")
    year = str(date.year)
    year_sum[year] = year_sum.get(year, 0) + item["B"]

newAA = [{"A": f"{year}-01-01", "B": sum_val} for year, sum_val in year_sum.items()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:06:05