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

如何循环嵌套对象数组并按顺序提取所有层级的ID

如何循环遍历嵌套对象数组并按顺序提取所有ID

给定如下嵌套结构的对象数组,需要遍历任意层级的子对象数组,按顺序提取所有id值:

let data = [{
  "id": "1",
  "child": [
    {
      "id": "12",
      "child": [
        {
          "id": "123",
          "child": [
           {
            "id": "1234"
           }
          ]
        }
      ]
    },
    {
      "id": "2",
      "child": [
        {
          "id": "22"
        }
      ]
    },
    {
      "id": "3"
    },
    {
      "id": "4",
      "child": [
        {
          "id": "42",
          "child": [
            {
              "id": "43"
            }
          ]
        }
      ]
    }
  ]
}]

预期输出

[1,12,123,1234,2,22,3,4,42,43]

我的尝试代码无法运行,尚未理清逻辑:

result.reduce((pv, cv) => {
  console.log(cv)

  let temp = cv
  let arr = []
  if(temp.hasOwnProperty("split")){
    arr = temp.split
    pv.push(temp.id)
    // again arr should loop, I'm still finding some logic!
  }
  return pv
}, [])

核心逻辑步骤

这是典型的深度优先遍历场景,用递归即可解决,步骤如下:

  • 准备一个空数组,用来存放最终收集到的所有ID
  • 编写一个递归处理函数,参数为单个对象:
    1. 将当前对象的id转为数字(如果需要字符串则跳过转换),添加到结果数组
    2. 检查当前对象是否有child属性,且child是一个非空数组
    3. 如果存在合法的child数组,遍历数组中的每一个子对象,依次调用这个递归函数
  • 遍历原始的根数组,对每个根对象执行上述递归函数
  • 最终结果数组就是按顺序排列的所有ID

注意:原始代码存在语法错误(比如let = [...]缺少变量名、部分对象括号未闭合),需要先修正这些问题才能正常运行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:09:21