Agrupar por categoria
Em APIs de e-commerce ou sistemas de inventário, é comum receber listas de produtos e precisar organizá-los por categoria para exibir em seções ou gerar relatórios. Dominar o reduce() para agrupar dados evita loops manuais e deixa o código mais declarativo e fácil de manter.
O PROBLEMA
Use reduce() para agrupar produtos em objeto {categoria: [produtos]}.
EXEMPLO
produtos → {grãos:["arroz","feijão"], laticínios:["leite"]}SOBRE O CONCEITO
O reduce() percorre o array e acumula um valor. Para agrupar, o acumulador inicial é um objeto vazio {}. Em cada iteração, verifica-se se a categoria já existe: se sim, faz push no array; se não, cria um novo array com o item. O erro comum é não inicializar o array da categoria, o que causa push em undefined. Por exemplo, fazer acc[categoria].push(produto) sem antes criar acc[categoria] = [] gera erro. A solução é usar acc[categoria] = acc[categoria] || [] e então adicionar o item.
RESOLUÇÃO