Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida sobre map

Bom dia, quando eu tento executar o map com uma arrow function em apenas uma linha sem a presença das chaves '{ }' o código funciona normalmente.

JSON.parse(xhr.responseText)
                        .map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor))
                        .forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))
                    this._mensagem.texto = 'Negociações importadas com sucesso.';

Porém quando eu acrescento chaves na arrow function o codigo simplesmente para de funcionar e retorna esse erro: 'Uncaught TypeError: Cannot read property 'data' of undefined'

JSON.parse(xhr.responseText)
                        .map(objeto => {
                                // Utilizando chaves
                            new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)
                        }).forEach(negociacao => this._listaNegociacoes.adiciona(negociacao))

Eu queria entender pq ocorre esse erro na função map. Valeu!!

1 resposta
solução!

Boa noite, Cezar! Como vai?

O que acontece é que o map() sempre tem que retornar um valor que será adicionado ao novo array que ele retorna!

No primeiro código tudo funciona pois como a função passada para o map() possui apenas uma instrução, tanto o return como o par de chaves podem ser omitidos.

Contudo, como no segundo trecho de código vc utilizou o par de chaves, então passa a ser obrigatório o uso do return! Sendo assim, para fazer o segundo trecho de código funcionar basta fazer:

map(objeto => {
     return new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor);
})

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!