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

如何优化多级嵌套数组中提取含子项Level2对象的代码

优化递归层级数组的Level 2对象提取代码

问题说明

我有一个递归至Level 3的对象数组(示例如下),需要提取其中包含子项的Level 2对象。现有代码已实现功能,但写法不够优雅,希望进行优化。

示例数据

const mainArr = [{
    children: [{
        children: [{
            children: [{
                children: [{}],
                level: 3
            }],
            level: 2
        }],
        level: 1
    }],
    level: 0
}]

现有实现代码

reasons = [
  ...[...data.map((level0) => level0.children)]
    .flat()
    .map((level1) => level1.children)
    .flat(),
].filter((level2) => level2.children.length);

优化后的代码

利用flatMap替代map+flat的组合简化嵌套结构,同时添加可选链操作符增强代码健壮性:

const reasons = data
  .flatMap(level0 => level0.children)
  .flatMap(level1 => level1.children)
  .filter(level2 => level2.children?.length);

优化点说明

  • flatMap同时完成映射与扁平化操作,相比多次map+flat的组合更简洁高效
  • 使用?.可选链操作符,避免因level2.children不存在导致的报错问题

期望输出结果

[
    {
        "children": [
            {
                "name": "Reason",
                "level": 3
            }
        ],
        "level": 2
    },
    {
        "children": [
            {
                "name": "Reason2",
                "level": 3
            }
        ],
        "level": 2
    }
]

内容的提问来源于stack exchange,提问作者Berkay Doğukan Urhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:51:35