Estudando Reduce Js
array.reduce(callback( acumulador, valorAtual[, index[, array]] )[, valorInicial]))
Função que é executada em cada valor no array (exceto no primeiro, se nenhum valorInicial for passado); recebe quatro argumentos:
O valor retornado na última invocação do callback, ou o argumento valorInicial, se fornecido (exemplo abaixo).
Opcional. O índice do elemento atual que está sendo processado no array.
Opcional. O array ao qual a função reduce() foi chamada.
Opcional. Valor a ser usado como o primeiro argumento da primeira chamada da função callback. Se nenhum valorInicial é fornecido, o primeiro elemento do array será usado como o valor inicial do acumulador e o valorAtual não será lido. Chamar reduce() em uma array vazia sem valor inicial retornará um erro.
O valor que resulta da redução.