Método reduce: juntando todos os itens em um único resultado
Entenda como combinar todos os elementos de um array em um único valor (soma, média, etc.).
Até agora você viu métodos que transformam (map) e filtram (filter) listas.
Agora chegou um método muito poderoso: o reduce.
Pense no reduce como um cofrinho:
- cada item da lista coloca uma contribuição;
- no final, você tem um resultado acumulado.
Esse resultado pode ser um número, texto, objeto ou até outro array.
Para que serve o reduce?
O reduce percorre o array e vai acumulando um valor até gerar um único resultado final.
Exemplos comuns:
- somar números;
- calcular total de carrinho;
- contar ocorrências;
- juntar textos;
- agrupar dados.
Sintaxe básica
const resultadoFinal = array.reduce((acumulador, itemAtual) => {
return novoValorDoAcumulador;
}, valorInicial);
Partes importantes
acumulador: guarda o resultado parcial.itemAtual: elemento atual do array.valorInicial: valor com que o acumulador começa (muito recomendado).
Exemplo 1: somando números
const numeros = [10, 20, 30];
const somaTotal = numeros.reduce((acumulador, numero) => {
return acumulador + numero;
}, 0);
console.log(somaTotal); // 60
Passo a passo:
- começa com
acumulador = 0 - 0 + 10 = 10
- 10 + 20 = 30
- 30 + 30 = 60
Exemplo 2: total de carrinho
const precos = [29.9, 10, 5.5];
const total = precos.reduce((acc, preco) => acc + preco, 0);
console.log(total); // 45.4
Exemplo 3: contar itens por categoria
const frutas = ["maçã", "banana", "maçã", "uva", "banana", "maçã"];
const contagem = frutas.reduce((acc, fruta) => {
acc[fruta] = (acc[fruta] || 0) + 1;
return acc;
}, {});
console.log(contagem);
// { maçã: 3, banana: 2, uva: 1 }
Aqui o resultado final é um objeto.
reduce sem valor inicial: cuidado
Se você não passar valor inicial:
- o primeiro item do array vira acumulador;
- a iteração começa no segundo item;
- em array vazio, pode gerar erro.
Por segurança e clareza, prefira passar valor inicial.
Diferença rápida com outros métodos
map: devolve novo array transformado.filter: devolve novo array filtrado.reduce: devolve um único resultado acumulado.
Boas práticas com reduce
- Sempre pense: “qual é meu acumulador?”
- Defina um valor inicial coerente (
0,"",{},[]). - Use nomes claros (
acc,total,contador). - Se a lógica ficar grande demais, extraia para função separada.
Resumo da lição
reduce é o método de “consolidar” dados: ele percorre a lista e entrega um resultado final acumulado.
Dominar reduce te ajuda a resolver problemas reais com mais elegância e menos código repetido.