按父节点优先顺序打印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);
逻辑说明
- 函数接收起始节点和目标对象作为参数
- 先打印当前节点
- 遍历当前节点的所有直接子节点,逐个打印
- 检查每个子节点是否存在非空的子节点列表,满足条件则递归调用函数处理该子节点,重复上述流程
内容的提问来源于stack exchange,提问作者Deepak Tiwari
相关产品推荐
相关产品推荐

