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

88
Views
Extrayendo el último elemento de una matriz anidada con recursividad

Quiero aplanar una matriz, la función de recursión se llama a sí misma hasta la última matriz de elementos pero no la última cadena de elementos, siento que me falta algo importante para comprender cómo funciona la recursión, la cadena en sí no se agrega a una matriz vacía.

 const nested = [[[[[['string']]]]], 5, '7']; const funcTest = function (arr) { const final = []; arr.forEach(el => { if (Array.isArray(el)) { console.log(el); funcTest(el); } else final.push(el); }); return final; }; console.log(funcTest(nested));

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Puede aplanar todas las matrices anidadas con la depth de argumento de toma plana de Infinity :

 const nested = [[[[[["string"]]]]], 5, "7"]; nested.flat(Infinity); //['string', 5, '7']

profundidad: el nivel de profundidad que especifica la profundidad a la que se debe aplanar una estructura de matriz anidada. El valor predeterminado es 1.

about 4 years ago · Juan Pablo Isaza Report

0

Debe agregar el resultado de las llamadas recursivas.

 const nested = [[[[[['string']]]]], 5, '7']; const funcTest = function (arr) { const final = []; arr.forEach(el => { if (Array.isArray(el)) { console.log(el); final.push(...funcTest(el)); // <- } else final.push(el); }); return final; }; console.log(funcTest(nested));

Otro enfoque recursivo:

 const nested = [[[[[['string']]]]], 5, '7']; flatValues = item => Array.isArray(item) ? item.flatMap(flatValues) : item; console.log(flatValues(nested));

about 4 years ago · Juan Pablo Isaza Report

0

El problema aquí es que no usa el valor de retorno de la llamada recursiva funcTest .

Que quieres hacer:

 const superFlat = (arr) => { const result = []; arr.forEach((item) => { if (!Array.isArray(item)) result.push(item); else result.push(...superFlat(item)); }); return result; }

O simplemente use arr.flat(Infinity)

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!