recientemente tengo una tarea que dice: atraviesa una estructura de datos de árbol e imprime el contenido en el formato especificado que he intentado hasta ahora pero no puedo lograr lo que quiero.
const data = { name: "my-project", children: [ { name: "node_modules", children: [ { name: "react", children: [ { name: "docs", children: [] }, ], }, ], }, { name: "src", children: [{ name: "index.js" }] }, ]}; // my-project // ├── node_modules // │ └── react // │ ├── docs // └── src // └── index.jsEstoy tratando de resolverlo así, pero cualquier ayuda sería buena.
let position = 0; function start(tree) { if (!tree) { return } let current = tree; if(position === 0) { console.log('// ' + current.name); } else { console.log(`// ${' '.repeat(position)}|___${current.name}`); } while(current) { current = current.children.shift(); position++; start(current); } } start(data);¿Cómo es esto?
const data = { name: "my-project", children: [ { name: "node_modules", children: [ { name: "react", children: [ { name: "docs", children: [] }, ], }, ], }, { name: "src", children: [{ name: "index.js" }] }, ]}; const prettyPrint = (tree, depth) => { if(depth === 0) { console.log('// ' + tree.name); } else if (depth === 1) { console.log(`// |${'────'.repeat(depth)} ${tree.name}`); } else { console.log(`// |${' '.repeat(depth - 1)} |──── ${tree.name}`); } if(tree.children){ tree.children.forEach(curr => prettyPrint(curr, depth + 1)); } } prettyPrint(data, 0)JSFiddle: https://jsfiddle.net/7qoyg8ep/