Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

357
Views
¿Cómo devolver la matriz completa en una función recursiva de JavaScript?

Tengo una función recursiva para trabajar con matrices anidadas que tienen varios niveles de profundidad. Se supone que el siguiente código selecciona elementos aleatorios, uno de cada nivel, y los combina en una matriz (en el orden en que se imprimen en la consola). Sin embargo, la matriz resultante solo contiene elementos de los niveles más altos (A, B o C, D o C), nada por debajo de eso. ¿Cuál es la razón para eso?

 const arry = [ ["A"], ["B", "C"], ["D", "E"], [ [ ["F1", "F2"], ["G1", "G2"], [ "H1", "H2", [ ["I1", "I2", "I3"], ["J1", "J2"], ["K1", "K2", "K3"], ], ], ], ], ]; function rndmElementSelection(array) { rndElm = array[Math.floor(Math.random() * array.length)]; return rndElm; } function recursion(array, resultAry = []) { array.forEach((element) => { if (typeof element === "string") { console.log(element); resultAry.push(element); } else { nE = rndmElementSelection(element); if (typeof nE === "string") { console.log(nE); resultAry.push(nE); } else { recursion(nE); } } }); return resultAry; } console.log(recursion(arry));
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El problema es que su llamada recursiva no pasa el segundo argumento.

Sin pasarlo, cada llamada recursiva solo llenará su propia matriz nueva. Devuelve esa matriz a la persona que llama, pero la persona que llama (haciendo la llamada recursiva) ignora ese valor devuelto, por lo que todo el trabajo de la llamada recursiva es en vano.

Así que la solución fácil es cambiar esto:

 } else { recursion(nE);

a esto:

 } else { recursion(nE, resultAry);
about 4 years ago · Juan Pablo Isaza Report

0

Prueba esto:

 function recursion(array, resultAry = []) { array.forEach((element) => { if (typeof element === "string") { console.log(element); resultAry.push(element); } else { nE = rndmElementSelection(element); if (typeof nE === "string") { console.log(nE); resultAry.push(nE); } else { resultAry = [...resultAry, ...recursion(nE)]; } } }); return resultAry; }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!