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

89
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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