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

如何按指定顺序将嵌套数组转换为扁平化数组?

实现嵌套数组按指定层级顺序的扁平化转换

这种转换完全可行,以下是具体的实现方案:

输入结构分析

你的输入是一个包裹着含titles数组的对象的数组,每个title下嵌套subtitles数组,每个subtitle下又嵌套content数组。需要按titleN → subtitleN → contentN的固定顺序,将各层级对象的指定属性扁平到一个对象中,最终将该对象放入数组返回。

实现代码

const data = [
  {
    titles: [
      {
        id: 1,
        name: "Title 01",
        subtitles: [
          {
            id: 2,
            name: "Subtitle 01",
            title_id: 1,
            content: [
              {
                id: 3,
                name: "Content 01",
                subtitle_id: 2,
              },
            ],
          },
        ],
      },
      {
        id: 4,
        name: "Title 02",
        subtitles: [
          {
            id: 5,
            name: "Subtitle 02",
            title_id: 4,
            content: [
              {
                id: 6,
                name: "Content 02",
                subtitle_id: 5,
              },
            ],
          },
        ],
      },
    ],
  },
];

function flattenData(input) {
  const result = {};
  // 提取输入中的titles数组(输入外层是数组,取第一个元素的titles)
  const titles = input[0].titles;
  
  titles.forEach((title, index) => {
    const sequenceNum = index + 1;
    // 生成title项
    result[`titles0${sequenceNum}`] = {
      name: title.name,
      id: title.id
    };
    
    // 提取当前title下的第一个subtitle(匹配示例结构)
    const subtitle = title.subtitles[0];
    // 生成subtitle项(保留你期望输出的`sutitles`拼写,建议规范为`subtitles`)
    result[`sutitles0${sequenceNum}`] = {
      name: subtitle.name,
      id: subtitle.id,
      title_id: subtitle.title_id
    };
    
    // 提取当前subtitle下的第一个content(匹配示例结构)
    const content = subtitle.content[0];
    // 生成content项
    result[`content0${sequenceNum}`] = {
      id: content.id,
      name: content.name,
      subtitle_id: content.subtitle_id
    };
  });
  
  // 按期望结构返回包裹在数组中的扁平对象
  return [result];
}

const flatArr = flattenData(data);
console.log(flatArr);

代码说明

  1. 层级遍历:先从输入中取出目标titles数组,遍历每个title元素;
  2. 序号生成:利用循环索引+1生成对应的序列编号(01、02...);
  3. 属性提取:依次将title、subtitle、content的指定属性提取出来,以titles0N、sutitles0N、content0N为键存入结果对象;
  4. 结构匹配:最终将扁平对象包裹在数组中,与你期望的输出结构完全一致。

扩展提示

如果你的实际场景中存在一个title对应多个subtitle、或一个subtitle对应多个content的情况,可在对应层级添加内层循环,调整键名的编号规则即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:00:55