No exercício "05 Simplificando o código" a forma não enxuta do reduce vem assim:
let listaDeNegociacoes = dadosServidor.reduce((novoArray, array) => {
// novoArray receberá os itens de array, no final terá uma dimensão apenas
return novoArray.concat(array, [])
})
.map(dado => {
// para cada dado, cria uma instância de negociação. No final, teremos uma nova lista só com instâncias de Negociacao
return new Negociacao(new Date(dado.data), dado.quantidade, dado.valor )
});
A forma enxuta assim:
let listaDeNegociacoes = dadosServidor
.reduce((novoArray, array) => novoArray.concat(array), [])
.map(dado =>
new Negociacao(new Date(dado.data), dado.quantidade, dado.valor ));
No primeiro caso o concat recebe o array a ser concatenado e um array vazio, ou seja, dois parâmetros:
return novoArray.concat(array, [])
Todavia, no no segundo caso o concat recebe apenas o array a ser concatenado e o array vazio ("[]") vem sozinho após uma vírgula:
.reduce((novoArray, array) => novoArray.concat(array), [])
É como se na forma não enxuta e cheia de chaves fosse assim:
return novoArray.concat(array), []
Isso está correto? Me parece que o array vazio [] está navegando sozinho ali, pois como no primeiro caso não é um parâmetro do concat.
Alguém explica?