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

如何将指定格式的JavaScript对象转换为目标嵌套结构?

数组对象结构转换实现方案

需求说明

将原数据中segment_names字段的字符串数组,转换为包含name(原字符串值)和连续自增id的对象数组,id从1开始递增。

原始数据结构

[
  {
    "major_segment": "A",
    "minor_segments": [
      {
        "segment_names": [
          "A11",
          "A12",
          "A13",
          "A14"
        ],
        "minor_segment_name": "List1"
      },
      {
        "segment_names": [
          "A21",
          "A22",
          "A23",
          "A24"
        ],
        "minor_segment_name": "List2"
      }
    ]
  },
  {
    "major_segment": "B",
    "minor_segments": [
      {
        "segment_names": [
          "B11",
          "B12",
          "B13"
        ],
        "minor_segment_name": "List3"
      },
      {
        "segment_names": [
          "B21",
          "B22",
          "B23"
        ],
        "minor_segment_name": "List4"
      }
    ]
  }
]

目标数据结构

const myObj = [
  {
    "major_segment": "A",
    "minor_segments": [
      {
        "segment_names": [
          { "name":"A11", id:1},
          { "name":"A12", id:2},
          { "name":"A13", id:3},
          { "name":"A14", id:4}
        ],
        "minor_segment_name": "List1"
      },
      {
        "segment_names": [
          { "name":"A21",id:5},
          { "name":"A22",id:6},
          { "name":"A23",id:7},
          { "name":"A24",id:8}
        ],
        "minor_segment_name": "List2"
      }
    ]
  },
  {
    "major_segment": "B",
    "minor_segments": [
      {
        "segment_names": [
          { "name":"B11",id:9},
          { "name":"B12",id:10},
          { "name":"B13",id:11}
        ],
        "minor_segment_name": "List3"
      },
      {
        "segment_names": [
          { "name":"B21",id:12},
          { "name":"B22",id:13},
          { "name":"B23",id:14}
        ],
        "minor_segment_name": "List4"
      }
    ]
  }
]

实现代码(JavaScript)

// 原始数据
const originalData = [
  {
    "major_segment": "A",
    "minor_segments": [
      {
        "segment_names": ["A11", "A12", "A13", "A14"],
        "minor_segment_name": "List1"
      },
      {
        "segment_names": ["A21", "A22", "A23", "A24"],
        "minor_segment_name": "List2"
      }
    ]
  },
  {
    "major_segment": "B",
    "minor_segments": [
      {
        "segment_names": ["B11", "B12", "B13"],
        "minor_segment_name": "List3"
      },
      {
        "segment_names": ["B21", "B22", "B23"],
        "minor_segment_name": "List4"
      }
    ]
  }
];

// 初始化自增ID计数器
let idCounter = 1;

// 转换逻辑
const myObj = originalData.map(major => {
  return {
    ...major,
    minor_segments: major.minor_segments.map(minor => {
      return {
        ...minor,
        segment_names: minor.segment_names.map(name => {
          return { name, id: idCounter++ };
        })
      };
    })
  };
});

console.log(myObj);

代码说明

  • 采用map方法逐层遍历数据结构,不修改原始数据,保持纯函数式处理逻辑
  • 通过全局计数器idCounter确保id从1开始连续递增
  • 解构原对象保留所有原有字段,仅替换segment_names的结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:01:17