Atenção ao usar Array.prototype.reduce

Estava trabalhando na avaliadora de times do Mojambo (typeCalc) e comecei a usar bastante map(), reduce() e afins para simplificar o código.

Depois de uns testes, cheguei a um problema que levei uns minutos para entender e corrigir, mas que me parece bastante fácil de cometer. Primeiro, a sintaxe do método Array.prototype.reduce é:

Tem mais dois parâmetros no callback (índice do elemento e o array sendo percorrido), mas não são necessários agora. O valor de acumulador é, inicialmente, initialValue. A ideia é utilizar reduce() para calcular um valor a partir de todos os elementos do array.

O que eu estava fazendo envolvia um callback assim:

O problema é que o valor do acumulador é o valor retornado pela última iteração, então ele inicia em initialValue, processa o primeiro elemento e se torna undefined. A solução é simplória:

Fiquei tão bravo por ter deixado isso passar que julguei necessário colocar um post na Internet a respeito. Espero ajudar alguém.

Leave a Reply