¿Alguna duda?

Reto 5 Reto 5

Reto 5

¡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

index.js
/*
Crea una función llamada `aplanar` que reciba un array que puede contener
otros 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.

pista1.js
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.

pista2.js
if (Array.isArray(elemento)) {
return aplanar(elemento);
}

Pista 3 Puedes usar reduce() junto con la recursión para ir acumulando los valores.

pista3.js
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:

solucion.js
// Opción 1: usando flat nativo
function aplanar(arr) {
return arr.flat(Infinity);
}
// Opción 2: implementación recursiva manual
function 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