Como Aplanar Arrays Aninhados no JavaScript sem Iteração Manual

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 argumento Infinity garante 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 usar Array.prototype.flatMap(), que é mais performático do que encadear .map().flat().

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *