Reto 5
10/3/2026
¡Hola Developers!
En este reto pondrás a prueba tus habilidades con arrays anidados y recursión en JavaScript. Tu misión será crear una función que reciba un array con posibles subarrays y devuelva todos sus elementos en un único array plano.
Enunciado
/*Crea una función llamada `aplanar` que reciba un array que puede contenerotros arrays anidados a cualquier profundidad.Debe devolver un nuevo array con todos los valores en un único nivel.
Ejemplo:Entrada: [1, [2, 3], [4, [5, 6]], 7]Salida: [1, 2, 3, 4, 5, 6, 7]*/Pistas
Pista 1
Puedes usar el método nativo flat() con el argumento Infinity para aplanar a cualquier profundidad.
arr.flat(Infinity);Pista 2
Si quieres implementarlo manualmente, piensa en recursión: si un elemento es un array, llama a la función sobre él.
if (Array.isArray(elemento)) { return aplanar(elemento);}Pista 3
Puedes usar reduce() junto con la recursión para ir acumulando los valores.
arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? aplanar(val) : val), []);Solución
Danger zone
Solución
Aquí tienes una posible implementación de la función:
// Opción 1: usando flat nativofunction aplanar(arr) { return arr.flat(Infinity);}
// Opción 2: implementación recursiva manualfunction aplanarManual(arr) { return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? aplanarManual(val) : val), [] );}
// Ejemplo de uso:console.log(aplanar([1, [2, 3], [4, [5, 6]], 7]));// Resultado esperado: [1, 2, 3, 4, 5, 6, 7]← Volver a los retos