1
resposta

resolução incorreta? Tentando referenciar propriedades inexistentes em array

let dadosServidor = [
    [
        [new Date(), 1, 100],
        [new Date(), 2, 100]
    ],
    [
        [new Date(), 1, 150],
        [new Date(), 2, 300]
    ],
    [
        [new Date(), 3, 50],
        [new Date(), 1, 100]
    ]        
];

Boa tarde. No exercício em questão, o array inicial está definido conforme acima. Entretanto, na resolução, após o reduce, tenta-se criar um novo objeto referenciando as propriedades inexistentes "dado", "quantidade" e "valor".

Código de resolução proposto no enunciado, antes da remoção das chaves:

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 )
});

Ao executar o código acima, as negociações são criadas com propriedades "undefined", já que o código procura as propriedades em um array.

Para resolver a questão, foi necessário, ao invés de buscar as propriedades, referenciar as posições do array:

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[0]), dado[1], dado[2] )
});

Estou correto, ou estou fazendo algo de errado?

1 resposta

Fala Daniel, tudo bom?

Pode subir seu código no github para eu dar uma olhada? Aparentemente faz sentido, mas só para dar uma checada mesmo :)