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

迭代深度优先遍历嵌套对象直接生成带全路径键值对数组实现求助

迭代版DFS遍历嵌套对象优化方案

修改后代码

function iterativeDft(root) {
  // 栈存储结构:[当前属性全路径, 当前对应值]
  const stack = [['', root]];
  const result = [];
  // 可遍历类型判断:排除null,包含对象、数组
  const isTraversable = val => val !== null && typeof val === 'object';

  while (stack.length > 0) {
    const [currentPath, currentVal] = stack.pop();

    if (isTraversable(currentVal)) {
      // 反转键值对后压栈,保证输出顺序和原结构属性顺序一致
      const entries = Object.entries(currentVal).reverse();
      for (const [key, val] of entries) {
        const newPath = currentPath ? `${currentPath}.${key}` : key;
        stack.push([newPath, val]);
      }
    } else {
      // 直接构造目标结构存入结果
      result.push({ [currentPath]: currentVal });
    }
  }

  return result;
}

核心优化点

  • 调整栈存储逻辑:不再存储需要后续拆分的拼接字符串,也不需要每次生成临时新对象压栈,改为存储[当前路径, 当前值]的结构化元组,路径在压栈时直接拼接完成,省去后续转换步骤。
  • 修复边界异常:补充了null值的判断,避免将typeof为object的null误判为可遍历对象导致运行报错。
  • 减少多余操作:遍历到基础类型值时直接构造{属性全路径: 对应值}的目标对象推入结果,同时通过反转键值对压栈的方式保证输出顺序,省去了原代码最后反转结果数组的操作。
  • 降低性能开销:移除了每次遍历子节点时调用Object.fromEntries生成新对象的逻辑,减少了不必要的内存占用和运算消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:57:00