Aplanar Arrays en JavaScript con Flat y FlatMap

Clase 23 de 28Curso de Manipulación de Arrays en JavaScript

Resumen

El método flat es inmutable que consiste en retornar un array donde los sub-arrays han sido aplanados hasta una profundidad especificada. El aplanamiento consiste en transformar un array de arrays a una sola dimensión.

Este procedimiento recibe un argumento:

  • La profundidad del aplanamiento, por defecto, tiene un valor de 1. Si se desea aplanar todos los sub-arrays en una sola dimensión, utiliza el valor de Infinity.
array.flat(profundidad)

Diferencia entre la estructura for y el método flat

Si se utiliza la estructura for para aplanar un array de arrays, es necesario utilizar otra estructura for para cada sub-nivel del array o recursión.

const matrix = [
  [1,2,3],
  [4,5,6],
  [7,8,9],
]

const flatArray = []

for(let i=0; i<matrix.length; i++){
  const array = matrix[i]
  for(let j=0; j<array.length; j++){
    flatArray.push(matrix[i][j])
  }
}

console.log(flatArray)
// [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

Con el método flat solamente es necesario indicar la profundidad de aplanamiento del array.

const array = [1,2,[3,4],5,6]
const result = array.flat() 
result// [1,2,3,4,5,6]

const array2 = [1, 2, [3, 4, [5, 6]]];
const result2 = array2.flat() 
result2// [1, 2, 3, 4, [5, 6]]

const array3 = [1, 2, [3, 4, [5, 6]]]
const result3 = array3.flat(2) 
result3// [1, 2, 3, 4, 5, 6]

const array4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]
const result4 = array4.flat(Infinity) 
result4// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Contribución creada por: Andrés Guano.