O array é percorrido da esquerda para direita invocando, a cada iteração, uma função de retorno.
O valor retornado é um valor acumulado que passa de callback para callback.
<aside> 💡 Usamos o reduce() quando queremos obter um valor cumulativo ou concatenado que se baseia nos elementos do array
</aside>
array.reduce( function( prevVal, elem, index, array ) {
...
}, initialValue );
let list = ['u','m','a',' ','f', 'r', 'a', 's', 'e', ' ',
'l', 'i', 'n', 'd', 'a', ' ', 'a', 'q', 'u', 'i']
list.reduce(
function(string, char) {
return string += char
},
'')
// resultado: "uma frase linda aqui"