Trabaja más rápido y con menos código al aplanar arrays anidados, transformar colecciones y eliminar duplicados en JavaScript. Aquí verás cómo combinar flat, map, flatMap, filter, indexOf, Set y Array.from para resolver casos comunes como matrices, duplicación de elementos y extracción de tags únicos.
¿Cómo aplanar arrays anidados con flat en JavaScript?
Cuando hay arrays anidados (matrices representadas como arrays de arrays), iterar y transformar se complica. Con el métodoflat(n) puedes aplanar hasta una profundidad específica. Si no sabes cuántos niveles hay, usa profundidadInfinity para obtener un solo nivel siempre.
flat con niveles: controla cuántos niveles aplanar.
flat con Infinity: aísla todos los valores en un único array.
reduce vs flat: con reduce también se puede, pero es más complejo de mantener.
// Aplanar por niveles o sin conocer la profundidadconst nested =[1,[2,[3,[4]]],5];nested.flat(1);// aplanar un nivelnested.flat(2);// aplanar dos nivelesnested.flat(Infinity);// aplanar todos los niveles
¿Cómo multiplicar y aplanar con map, flat y flatMap?
El reto: dado [1, 2, 3], construir un nuevo array que intercale el original y su duplicado por 2: 1, 2, 2, 4, 3, 6. Con map puedes generar subarrays [n, n*2], pero el resultado queda anidado. Después, aplana con flat(1) o usa directamente flatMap.
map conserva la longitud: devuelve el mismo número de elementos que entra.
map + flat: transforma y luego aplanas un nivel.
flatMap: es como hacer map seguido de flat por defecto.
const nums =[1,2,3];// map que genera subarrays y luego flat a un nivelconst resultWithFlat = nums.map(n=>[n, n *2]).flat();// [1, 2, 2, 4, 3, 6]// flatMap: map + flat(1)const resultWithFlatMap = nums.flatMap(n=>[n, n *2]);// [1, 2, 2, 4, 3, 6]
¿Qué patrón de transformación conviene concatenando métodos?
Encadena métodos en secuencia: transforma con map y aplana con flat. Este patrón es muy común para procesar datos. Similarmente, reduce suele usarse para agrupar o acumular resultados.
¿Qué reto debes resolver con flatloop?
Tienes un array de textos como: "Hola, mundo", "JavaScript es genial", "Aprende programación". Debes transformarlo en un solo array de un nivel con cada una de las palabras separadas y en orden. La salida debe ser todas las palabras en un único array. Comparte tu solución en comentarios.
¿Cómo obtener tags únicos con flatMap y set?
Supón un listado de posts con títulos y tags (p. ej., "Introducción a JavaScript", "CSS Grid", "APIs con Node.js"). Objetivo: obtener todos los tags únicos.
Extraer tags: usa flatMap para llevarlos a un solo nivel.
Eliminar duplicados con filter + indexOf: técnica directa con algo de lógica.
Eliminar duplicados con Set: aplica teoría de conjuntos; un Set no admite repetidos.
Volver a array: usa Array.from para recuperar un array.
const posts =[{title:'Introducción a JavaScript',tags:['JavaScript','API']},{title:'CSS Grid',tags:['CSS','JavaScript']},{title:'APIs con Node.js',tags:['API','Node.js']}];// 1) extraer todos los tags en un solo nivelconst allTags = posts.flatMap(post=> post.tags);// 2a) únicos con filter + indexOfconst uniqueTagsFilter = allTags.filter((tag, i, arr)=> arr.indexOf(tag)=== i);// 2b) únicos con Set y volver a arrayconst uniqueTagsSet =Array.from(newSet(allTags));
Ideas clave:
flat y flatMap reducen anidación y simplifican recorridos.
map transforma, pero no cambia la longitud del array.
filter + indexOf elimina repetidos sin estructuras extra.
Set remueve duplicados por definición; Array.from lo convierte a array operable.
¿Tienes otra forma de resolver estos casos o quieres compartir tu reto con palabras? Deja tu comentario y cuéntanos tu enfoque.