Advertisement
Guest User

Recursively

a guest
Jun 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. Nodos
  2. var nodes = [
  3. { id: 1, parent: 0 },
  4. { id: 2, parent: 0 },
  5. { id: 3, parent: 1 },
  6. { id: 4, parent: 1 },
  7. { id: 5, parent: 2 },
  8. { id: 6, parent: 2 },
  9. { id: 7, parent: 2 },
  10. { id: 30, parent: 3 },
  11. { id: 31, parent: 3 },
  12. { id: 70, parent: 7 },
  13. { id: 71, parent: 7 },
  14. { id: 72, parent: 71},
  15. ];
  16.  
  17. //Construimos t el array de parents, entonces si t[i] === x significa que x es el parent de i
  18.  
  19. var t = [];
  20. for (var i = 0; i < nodes.length; i++) {
  21. t[nodes[i].id] = nodes[i].parent;
  22. }
  23.  
  24.  
  25. // t representa el array de parents
  26. // c representa el parent donde los childs deben ser agregados al array
  27.  
  28. function f(t, c) {
  29. // La estructura de la salida
  30. var a = [];
  31.  
  32. // Hacemos el loop de nodos
  33. for (var i = 0; i < t.length; i++) {
  34. // Si el nodo tiene como parent a c
  35. if (t[i] === c) {
  36. // Creamos un objeto con el id y sub y hacemos push en el al array a
  37.  
  38. a.push({
  39. id: i,
  40. // la propiedad sub se genera recursivamente
  41. sub: f(t, i)
  42. });
  43. }
  44. }
  45. // Finalizamos retornando el array a
  46. return a;
  47. }
  48.  
  49. // Imprimimos el JSON de la funcion inicial, indicando que 0 es el parametro ya que es el parent de todos los nodos
  50. console.log(JSON.stringify(f(t, 0)));
  51.  
  52.  
  53.  
  54.  
  55. [
  56. {
  57. "id":1,
  58. "sub":[
  59. {
  60. "id":3,
  61. "sub":[
  62. {
  63. "id":30,
  64. "sub":[]
  65. },
  66. {
  67. "id":31,
  68. "sub":[]
  69. }
  70. ]
  71. },
  72. {
  73. "id":4,
  74. "sub":[]
  75. }
  76. ]
  77. },
  78. {
  79. "id":2,
  80. "sub":[
  81. {
  82. "id":5,
  83. "sub":[]
  84. },
  85. {
  86. "id":6,
  87. "sub":[]
  88. },
  89. {
  90. "id":7,
  91. "sub":[
  92. {
  93. "id":70,
  94. "sub":[]
  95. },
  96. {
  97. "id":71,
  98. "sub":[]
  99. }
  100. ]
  101. }
  102. ]
  103. }
  104. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement