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

如何将可变深度的嵌套分类层级Array扁平化合并为一维对象数组

实现方案

你需要的嵌套分类数组转一维数组可以通过深度优先递归遍历实现,支持任意深度的层级结构。

注:你给出的原始数组写法存在语法问题,实际业务中这类嵌套分类通常每个节点为对象,额外携带children字段存储子分类数组,我们基于这个通用结构给出实现方案。如果你的实际结构有差异,仅需调整节点信息提取逻辑即可,递归逻辑完全通用。

代码实现(JavaScript示例)

输入结构示例

const nestedCategories = [
  {
    id: 1,
    name: "Kategorie 1",
    parent_id: null,
    children: [
      {
        id: 2,
        name: "Kategorie 1.1",
        parent_id: 1,
        children: [
          {
            id: 5,
            name: "Kategorie 1.1.1",
            parent_id: 2,
            children: [
              { id: 11, name: "Kategorie 1.1.1.1", parent_id: 5, children: [] },
              { id: 12, name: "Kategorie 1.1.1.2", parent_id: 5, children: [] }
            ]
          }
        ]
      }
    ]
  }
]

拍平函数

function flattenCategories(nestedArr) {
  const result = []
  // 递归遍历所有节点
  function traverse(arr) {
    arr.forEach(item => {
      // 提取分类基础信息,排除子分类数组
      const { children, ...categoryInfo } = item
      result.push(categoryInfo)
      // 存在子分类则递归处理
      if (children?.length) {
        traverse(children)
      }
    })
  }
  traverse(nestedArr)
  return result
}

调用效果

const flatArr = flattenCategories(nestedCategories)
console.log(flatArr)
/* 输出结构和你要求的完全一致:
[
  { id: 1, name: 'Kategorie 1', parent_id: null },
  { id: 2, name: 'Kategorie 1.1', parent_id: 1 },
  { id: 5, name: 'Kategorie 1.1.1', parent_id: 2 },
  { id: 11, name: 'Kategorie 1.1.1.1', parent_id: 5 },
  { id: 12, name: 'Kategorie 1.1.1.2', parent_id: 5 }
]
*/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:57:02