La función node.eachAfter() se usa para invocar una función particular para cada Node, pero en un orden transversal posterior al pedido. Visita cada Node en orden posterior al recorrido y realiza una operación en ese Node en particular y cada uno de sus descendientes.
Sintaxis:
node.eachAfter(function);
Parámetros: esta función acepta un solo parámetro como se mencionó anteriormente y se describe a continuación:
- función: Esta es la función que se va a invocar para cada Node.
Valores devueltos: esta función no devuelve nada.
Ejemplo 1:
HTML
<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "UTF-8" /> <meta name = "viewport" path1tent = "width=device-width, initial-scale = 1.0"/> <script src = "https://d3js.org/d3.v4.min.js"> </script> </head> <body> <script> // Constructing a tree var tree={ // Root node name: "rootNode", children: [ { // Child of root node name: "child1", value: 2 }, { // Child of root node name: "child2", value: 3, children: [ { // Child of child2 name: "grandchild1", value: 1, children:[ { // Child of grandchild1 name: "grand_granchild1_1", value: 4 }, { // Child of grandchild1 name: "grand_granchild1_2", value: 5 } ] }, { name: "grandchild2", children:[ { // Child of grandchild2 name: "grand_granchild2_1" }, { // Child of grandchild2 name: "grand_granchild2_2" } ] } ] } ] }; var obj = d3.hierarchy(tree); const BFS = []; obj.eachAfter(d => BFS.push ( " ".repeat(d.depth) + `${d.depth}: ${d.data.name}` )); BFS.forEach((e)=>{ console.log(e); }) </script> </body> </html>
Producción:
Ejemplo 2:
HTML
<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "UTF-8" /> <meta name = "viewport" path1tent = "width=device-width, initial-scale = 1.0"/> <script src = "https://d3js.org/d3.v4.min.js"> </script> </head> <body> <script> var obj = d3.hierarchy({ // Root node name: "rootNode", children: [ { // Child of root node name: "child1", value: 2 }, { // Child of root node name: "child2", value: 3, children: [ { // Child of child2 name: "grandchild1", value: 1, children:[ { // Child of grandchild1 name: "grand_granchild1_1", value: 4 }, { // Child of grandchild1 name: "grand_granchild1_2", value: 5 } ] } ] } ] }); const BFS = []; obj.eachAfter(d => BFS.push ( " ".repeat(d.depth) + `${d.depth}: ${d.data.name}` )); console.log(BFS); </script> </body> </html>
Producción: