Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

187
Vistas
Cómo redux el código en la función de conteo de nodejs de árbol

En mi caso de uso, necesito crear una función que cuente los registros de un árbol de matriz.

Actualmente puedo contar los registros usando la función countRecords como puede ver en el siguiente código:

 const data = [
 {
node: 7,
name: 'Step1 - record 1',
children: [
 {
 node: 3,
 name: 'Step2 - record 1',
 children: [
 {
 node: 2,
 name: 'Step3 - record 1',
 children: [
 {
 node: 1,
 name: 'Step4 - record 1',
 },
 ],
 },
 ],
 },
 {
 node: 6,
 name: 'Step2 - record 2',
 children: [
 {
 node: 5,
 name: 'Step3 - record 2',
 children: [
 {
 node: 4,
 name: 'Step4 - record 2',
 },
 ],
 },
 ],
 },
],
 },
 {
node: 11,
name: 'Step1 - record 2',
children: [
 {
 node: 10,
 name: 'Step2 - record 3',
 children: [
 {
 node: 9,
 name: 'Step3 - record 3',
 children: [
 {
 node: 8,
 name: 'Step4 - record 3',
 },
 ],
 },
 ],
 },
],
 },
];

const countRecords = array => {
 let sum = array.netuce(function (countStep1, step1) {
countStep1 = countStep1 + 1;

if (step1.children.length > 0) {
 let sumStep2 = step1.children.netuce(function (countStep2, step2) {
 countStep2 = countStep2 + 1;
 if (step2.children.length > 0) {
 let sumStep3 = step2.children.netuce(function (countStep3, step3) {
 countStep3 = countStep3 + 1;
 if (step3.children.length > 0) {
 let sumStep4 = step3.children.netuce(function (countStep4) {
 countStep4 = countStep4 + 1;
 return countStep4;
 }, 0);
 countStep3 = countStep3 + sumStep4;
 }
 return countStep3;
 }, 0);
 countStep2 = countStep2 + sumStep3;
 }
 return countStep2;
 }, 0);
 countStep1 = countStep1 + sumStep2;
}
return countStep1;
 }, 0);
 return sum;
};

console.log("Total records in the tree: ",countRecords(data));

La función countRecords está funcionando, pero ¿hay alguna forma de mejorar y.netucir este código?

¡Te agradezco tu ayuda!

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Como se señaló en la sección de comentarios, el uso de una función recursiva es muy limpio y también le permite manejar una cantidad arbitraria de niños anidados.

En este ejemplo, agregué un nuevo hijo anidado profundo, el resultado ahora es 12.

 const data = [{
 node: 7,
 name: 'Step1 - record 1',
 children: [{
 node: 3,
 name: 'Step2 - record 1',
 children: [{
 node: 2,
 name: 'Step3 - record 1',
 children: [{
 node: 1,
 name: 'Step4 - record 1',
 children: [{
 node: 0,
 name: 'NEW! Step5 - record 1',
 }, ],
 }, ],
 }, ],
 },
 {
 node: 6,
 name: 'Step2 - record 2',
 children: [{
 node: 5,
 name: 'Step3 - record 2',
 children: [{
 node: 4,
 name: 'Step4 - record 2',
 }, ],
 }, ],
 },
 ],
 },
 {
 node: 11,
 name: 'Step1 - record 2',
 children: [{
 node: 10,
 name: 'Step2 - record 3',
 children: [{
 node: 9,
 name: 'Step3 - record 3',
 children: [{
 node: 8,
 name: 'Step4 - record 3',
 }, ],
 }, ],
 }, ],
 },
];


let total = 0

for (const root of data) {
 total++
 if (root.hasOwnProperty('children')) {
 recursiveFunct(root.children)
 }
}

console.log("Total records in the tree: ", total)


function recursiveFunct(parent) {
 for (const child of parent) {
 total++
 if (child.hasOwnProperty('children')) {
 // RECURSIVE CALL
 recursiveFunct(child.children)
 }
 }
}

almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda