Como Agrupar Elementos de um Array em JavaScript com Object.groupBy

Como Agrupar Elementos de um Array em JavaScript com Object.groupBy

O método nativo Object.groupBy() simplifica a organização de elementos de um array com base em critérios ou propriedades específicas. Ele elimina a necessidade de escrever rotinas complexas com Array.prototype.reduce() ou dependências externas como Lodash para agrupar dados de forma limpa.

JavaScript

// Array de objetos com dados de produtos
const produtos = [
  { nome: 'Teclado', categoria: 'Eletrônicos', preco: 150 },
  { nome: 'Cadeira', categoria: 'Móveis', preco: 350 },
  { nome: 'Mouse', categoria: 'Eletrônicos', preco: 80 },
  { nome: 'Mesa', categoria: 'Móveis', preco: 500 }
];

// Agrupamento por propriedade simples
const porCategoria = Object.groupBy(produtos, produto => produto.categoria);

// Agrupamento por condição dinâmica
const porFaixaDePreco = Object.groupBy(produtos, produto => {
  return produto.preco > 200 ? 'caro' : 'acessivel';
});

// Exemplos de uso prático funcionando
console.log('Agrupados por categoria:', porCategoria);
/*
Saída:
{
  Eletrônicos: [{ nome: 'Teclado', ... }, { nome: 'Mouse', ... }],
  Móveis: [{ nome: 'Cadeira', ... }, { nome: 'Mesa', ... }]
}
*/

console.log('Agrupados por faixa de preço:', porFaixaDePreco);

Pontos-chave

  • Retorno em Objeto Nulo/Padrão: O Object.groupBy() retorna um objeto nulo (sem protótipo de objeto comum), cujas chaves correspondem às strings retornadas pela função de callback de agrupamento.
  • Função Callback Iterativa: A função de callback recebe o elemento atual, o índice e o array completo como parâmetros, permitindo lógicas de agrupamento flexíveis e dinâmicas.
  • Imutabilidade: O método é totalmente não mutável, ou seja, cria uma nova estrutura sem alterar o array de dados original.
  • Diferença para Map.groupBy: Caso precise utilizar objetos ou chaves não-string (como números ou booleans mantidos como tipos primitivos/referências), prefira a API irmã Map.groupBy().

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 *