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

如何将扁平JSON结构重组为按年份嵌套的数组结构?

按年份分组聚合JSON数据的实现方案

这事儿其实不难,核心就是把数据按年份分组再整理格式就行,我给你用两种常用语言写个示例,你一看就懂:

JavaScript 实现

用数组的reduce方法就能高效完成分组,它天生适合这种累积聚合的场景:

// 你的原始数据
const originalData = [
  {Id: "1", Id2: "1", Year: "2019", Month: "1", Value: "123"},
  {Id: "1", Id2: "1", Year: "2019", Month: "2", Value: "3"},
  {Id: "1", Id2: "1", Year: "2019", Month: "3", Value: "-123"},
  {Id: "1", Id2: "1", Year: "2020", Month: "1", Value: "214"},
  {Id: "1", Id2: "1", Year: "2020", Month: "2", Value: "-41123"}
];

// 分组并转换格式
const groupedData = Object.entries(
  originalData.reduce((acc, item) => {
    // 如果当前年份还没在累加对象里,初始化一个空数组
    if (!acc[item.Year]) {
      acc[item.Year] = [];
    }
    // 补零处理月份,然后把需要的字段加入对应年份的数组
    acc[item.Year].push({
      Month: item.Month.padStart(2, '0'), // 把"1"转成"01"
      Value: item.Value
    });
    return acc;
  }, {}) // 初始值是空对象,用来存年份和对应数据
).map(([Year, data]) => ({ Year, data })); // 把键值对转换成你要的数组结构

console.log(groupedData);

关键细节:

  • reduce负责遍历原始数据,把相同年份的条目归到同一组
  • padStart(2, '0')确保月份始终是两位数字,解决单月份的格式问题
  • 最后用Object.entries+map把分组后的对象转换成你需要的数组格式

Python 实现

如果用Python的话,collections.defaultdict能简化分组操作:

# 原始数据
original_data = [
    {"Id": "1", "Id2": "1", "Year": "2019", "Month": "1", "Value": "123"},
    {"Id": "1", "Id2": "1", "Year": "2019", "Month": "2", "Value": "3"},
    {"Id": "1", "Id2": "1", "Year": "2020", "Month": "1", "Value": "214"},
]

from collections import defaultdict

# 初始化分组字典,键是年份,值是对应的数据列表
grouped_dict = defaultdict(list)
for item in original_data:
    # 用f-string格式化月份,补零到两位
    formatted_month = f"{item['Month']:02d}"
    grouped_dict[item['Year']].append({
        "Month": formatted_month,
        "Value": item['Value']
    })

# 转换成目标数组格式
grouped_data = [{"Year": year, "data": data} for year, data in grouped_dict.items()]

print(grouped_data)

核心思路:

不管用哪种语言,步骤都是一样的:

  1. 按年份分组:把相同年份的条目归类到一起
  2. 整理字段格式:处理月份补零,只保留需要的Month和Value字段
  3. 转换结构:把分组后的结果转换成你要求的数组嵌套格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:56:45