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

如何遍历深层嵌套对象数组并生成完全扁平化的新数组

你现有的递归逻辑本身可以遍历到所有层级节点,你觉得内层子项没有推入结果,大概率是查看输出时只看了结果数组前几项父节点内置的children属性,误以为子节点没有单独加入,实际上所有子节点已经被拼接进了结果数组的后续位置。如果需要符合你给出的输出样例,可根据实际需求选择以下两种修正方案:

方案1:保留所有层级节点,移除多余children字段

适合需要包含从顶层到末端所有节点,只需要去掉children属性的场景:

function flat(array) {
    const result = [];
    array.forEach(item => {
        // 解构过滤掉children属性,保留其他业务字段
        const { children, ...pureItem } = item;
        result.push(pureItem);
        if (Array.isArray(children)) {
            result.push(...flat(children));
        }
    })
    return result;
}

方案2:仅保留无children的叶子节点

适配你给出的输出样例,只返回最末端没有子级的节点:

function flat(array) {
    const result = [];
    array.forEach(item => {
        if (Array.isArray(item.children) && item.children.length > 0) {
            // 有子节点就递归处理子级,不保留当前父节点
            result.push(...flat(item.children));
        } else {
            // 无子孙节点直接存入结果
            result.push(item);
        }
    })
    return result;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:09:02