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

JSON数据格式转换需求:按分类聚合多版本对象

解决JSON数组按分类分组转换的问题

需求

将包含单分类对象的数组,转换为以分类名为键、对应分类的所有版本详情列表为值的对象,同时需要将id转为字符串,替换last_sync_date字段值。

输入示例

const inputData = [
  {
    "category1": {
      "name": "category1",
      "id": 1,
      "last_sync_date": "None",
      "version": "Version 1"
    }
  },
  {
    "category1": {
      "name": "category1",
      "id": 2,
      "last_sync_date": "None",
      "version": "Version 2"
    }
  },
  {
    "category2": {
      "name": "category2",
      "id": 1,
      "last_sync_date": "None",
      "version": "Version 1"
    }
  },
  {
    "category3": {
      "name": "category3",
      "id": 2,
      "last_sync_date": "None",
      "version": "Version 2"
    }
  }
];

输出示例

{
  "category1": [
    {
      "id": "1",
      "name": "category1",
      "last_sync_date": "01/01/2022 10:45 AM",
      "version": "Version 1"
    },
    {
      "id": "2",
      "name": "category1",
      "last_sync_date": "01/01/2022 10:45 AM",
      "version": "Version 2"
    }
  ],
  "category2": [
    {
      "id": "1",
      "name": "category2",
      "last_sync_date": "01/01/2022 10:45 AM",
      "version": "Version 1"
    }
  ],
  "category3": [
    {
      "id": "2",
      "name": "category3",
      "last_sync_date": "01/01/2022 10:45 AM",
      "version": "Version 2"
    }
  ]
}

解决方案(JavaScript)

使用数组的reduce方法遍历分组,同时处理字段格式:

const transformData = (data) => {
  return data.reduce((acc, item) => {
    // 获取当前项的分类名称和详情数据
    const category = Object.keys(item)[0];
    const detail = item[category];

    // 处理字段:id转字符串,替换last_sync_date
    const processedDetail = {
      ...detail,
      id: String(detail.id),
      last_sync_date: "01/01/2022 10:45 AM"
    };

    // 初始化分类数组并添加数据
    if (!acc[category]) {
      acc[category] = [];
    }
    acc[category].push(processedDetail);

    return acc;
  }, {});
};

// 执行转换
const outputData = transformData(inputData);
console.log(outputData);

代码说明

  1. 遍历分组:通过reduce方法累加构建目标对象,初始值为空对象
  2. 提取分类:每个数组元素只有一个键(分类名),用Object.keys(item)[0]快速获取
  3. 字段处理:复制原详情对象,将id转为字符串,替换last_sync_date为指定值
  4. 数组构建:如果分类不存在于目标对象中,先初始化空数组,再将处理后的详情推入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:45:35