Como Aplanar Arrays Aninhados no JavaScript sem Iteração Manual
Manipular estruturas de dados multidimensionais em JavaScript costumava exigir funções recursivas complexas ou loopsforEach manuais. O método nativo Array.prototype.flat() resolve esse problema de forma direta, permitindo achatar arrays aninhados em uma única lista plana com apenas uma linha de código.
JavaScript
// Array aninhado com múltiplos níveis de profundidade
const dadosMatriz = [1, 2, [3, 4, [5, 6, [7, 8]]]];
// 1. Aplanamento padrão (achata apenas 1 nível de profundidade)
const umNivel = dadosMatriz.flat();
console.log('1 Nível:', umNivel);
// Resultado: [1, 2, 3, 4, [5, 6, [7, 8]]]
// 2. Aplanamento com profundidade específica (ex: 2 níveis)
const doisNiveis = dadosMatriz.flat(2);
console.log('2 Níveis:', doisNiveis);
// Resultado: [1, 2, 3, 4, 5, 6, [7, 8]]
// 3. Aplanamento completo independente da profundidade (Infinity)
const totalmentePlano = dadosMatriz.flat(Infinity);
console.log('Totalmente Plano:', totalmentePlano);
// Resultado: [1, 2, 3, 4, 5, 6, 7, 8]
// 4. Bônus: Remoção automática de "slots vazios" (sparse arrays)
const arrayComEspacos = [1, 2, , 4, [5, , 7]];
console.log('Sem espaços vazios:', arrayComEspacos.flat());
// Resultado: [1, 2, 4, 5, 7]
- Parâmetro
depth(opcional): Define quantos níveis de aninhamento devem ser achatados. O valor padrão é1. - Uso de
Infinity: Passar o argumentoInfinitygarante que o array será completamente descompactado em uma única dimensão, independentemente do número de níveis internos. - Remoção de Elementos Vazios: O método
flat()remove automaticamente slots vazios (empty slots) da estrutura original sem necessidade de aplicar filtros adicionais. - Imutabilidade: O
flat()não altera o array original (non-mutating); ele sempre retorna um novo array com os valores processados. - Mapeamento Combinado (
flatMap): Para casos onde você precisa transformar os dados e achatar o resultado simultaneamente, prefira usarArray.prototype.flatMap(), que é mais performático do que encadear.map().flat().
