Quiero imprimir todos los elementos de "cantidad" dentro de este árbol, pero por lo que he probado, si el nodo tiene más de 2 hijos, simplemente no imprimirá los otros, como en el resultado a continuación, yo Me estoy quedando sin ideas. Este es mi código real:
function preOrder(tree) { var qntChildren = 0 try{ console.log(tree.quantity) if (tree.childrens || tree.quantity) { preOrder(tree.childrens[0]) } }catch(e) { preOrder(tree.childrens[qntChildren + 1]) } } preOrder(treeModel)Este es el árbol:
var treeModel = { "quantity": 5, "childrens": [ { "quantity": 3, "childrens": [ { "tech": "B", "quantity": 1, "childrens": [] }, { "tech": "C", "quantity": 4, "childrens": [] }, { "tech": "C", "quantity": 6, "childrens": [] } ] } ] }La salida es:
5 3 1 4 c:\Users\gabri\Área de Trabalho\Estágio\Arvore.js:41 preOrder(tree.childrens[qntChildren + 1]) ^ TypeError: Cannot read property 'childrens' of undefined at preOrder (c:\Users\gabri\Área de Trabalho\Estágio\Arvore.js:41:23) at preOrder (c:\Users\gabri\Área de Trabalho\Estágio\Arvore.js:41:9) at Object.<anonymous> (c:\Users\gabri\Área de Trabalho\Estágio\Arvore.js:46:1) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) at internal/main/run_main_module.js:17:47Puede hacer esto usando un bucle for y recursividad.
var treeModel = { quantity: 5, childrens: [ { quantity: 3, childrens: [ { tech: 'B', quantity: 1, childrens: [] }, { tech: 'C', quantity: 4, childrens: [] }, { tech: 'C', quantity: 6, childrens: [] }, ], }, ], }; function getQuantity(tree) { console.log(tree.quantity); for (const child of tree.childrens) getQuantity(child); } getQuantity(treeModel)