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

按父节点优先顺序打印JavaScript对象元素的实现问询

实现父节点优先的JavaScript对象元素打印功能

需求是按照指定顺序打印JavaScript对象中的元素:先打印父节点,再依次打印它的所有子节点;对于有子节点的子节点,重复这个流程(先打印该子节点本身,再打印它的子节点)。

示例数据

const emps = {
    "Jacobs": ["Emiel", "Svjetlana", "Ivanna"],
    "Ivanna": ["Michael", "Lawson"],
    "Emiel": ["John", "Ruby"],    
    "Lawson": [],
    "Michael": ["Lindsay", "Ferguson"],
    "Ferguson": []
}

预期输出

"Jacobs" 
"Emiel"
"Svjetlana"
"Ivanna"
"Emiel"
"John"
"Ruby"
"Ivanna"
"Michael"
"Lawson"
"Michael"
"Lindsay"
"Ferguson"

实现代码

function printNodes(startNode, emps) {
    // 打印当前父节点
    console.log(`"${startNode}"`);
    const children = emps[startNode] || [];
    // 依次打印所有直接子节点
    children.forEach(child => console.log(`"${child}"`));
    // 对有子节点的子节点递归执行打印逻辑
    children.forEach(child => {
        if (emps[child] && emps[child].length > 0) {
            printNodes(child, emps);
        }
    });
}

// 从根节点Jacobs开始执行
printNodes("Jacobs", emps);

逻辑说明

  1. 函数接收起始节点和目标对象作为参数
  2. 先打印当前节点
  3. 遍历当前节点的所有直接子节点,逐个打印
  4. 检查每个子节点是否存在非空的子节点列表,满足条件则递归调用函数处理该子节点,重复上述流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:20:32