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

如何将按年份分组的嵌套JSON转换为指定数组结构(JavaScript)

JavaScript 实现嵌套JSON转指定数组结构

示例输入

假设你的原始嵌套JSON结构如下:

const originalData = {
  "2020": {
    "1": { "Cost": 100, "year": 2020 },
    "2": { "Cost": 200, "year": 2020 }
  },
  "2021": {
    "1": { "Cost": 150, "year": 2021 },
    "2": { "Cost": 250, "year": 2021 },
    "3": { "Cost": 300, "year": 2021 }
  }
};

期望输出

转换后得到的数组结构:

[
  { date: "2020", "1": 100, "2": 200 },
  { date: "2021", "1": 150, "2": 250, "3": 300 }
]

实现代码

可以通过遍历对象键值对的方式完成转换:

function transformData(data) {
  // 将原始对象转为年份-子对象的键值对数组,再逐个处理
  return Object.entries(data).map(([year, items]) => {
    const row = { date: year };
    // 遍历每个编号对应的子对象,提取Cost值
    Object.entries(items).forEach(([id, item]) => {
      row[id] = item.Cost;
    });
    return row;
  });
}

// 调用转换函数
const transformedResult = transformData(originalData);
console.log(transformedResult);

关键逻辑说明

  • Object.entries():把对象的键和值转为数组形式,方便遍历处理
  • map():遍历每个年份对应的项,生成数组中的单个元素
  • 内层forEach():处理每个年份下的编号数据,把编号作为属性名,Cost值作为属性值,合并到结果对象中

如果需要处理缺失Cost值的情况(比如某些编号没有Cost属性),可以修改赋值逻辑,例如设置默认值:

row[id] = item?.Cost || 0;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:21:00