3
respostas

Usando map dentro de outro map é possivel ?

Olá pessoal,

Tomando como exemplo o código abaixo:

obterNegociacoesDaSemanaRetrasada() {

       return new Promise((resolve, reject) => {

            this._http
                .get('negociacoes/retrasada')
                .then(negociacoes => {
                    console.log(negociacoes);
                    resolve(negociacoes.map(objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
                })
                .catch(erro => {
                    console.log(erro);
                    reject('Não foi possível obter as negociações da semana retrasada');
                });  
       }); 
    }    

Se a minha classe modelo Negociação tivesse dentro dela uma array de um outro objeto (por exemplo Mensagem), como eu poderia converter este array para a minha classe Mensagem utilizando o método demostrado acima ? ?

class Negociacao {    
    constructor(data, quantidade, valor, mensagens) {        
        this._data = new Date(data.getTime());
        this._quantidade = quantidade;
        this._valor = valor;
        this._mensagens = mensagens;
        Object.freeze(this);
    }    
    get volume() {        
        return this._quantidade * this._valor;
    }    
    get data() {        
        return new Date(this._data.getTime());
    }    
    get quantidade() {        
        return this._quantidade;
    }    
    get valor() {        
        return this._valor;
    }    
    get mensagens() {        
        return this._mensagens;
    }
}
class Mensagem {    
    constructor(texto='') {        
        this._texto = texto;
    }    
    get texto() {        
        return this._texto;
    }    
    set texto(texto) {        
        this._texto = texto;
    }
}
3 respostas

Fala aí Leandro, tudo bem? Se eu entendi o problema de forma correta você poderia fazer um map no construtor da classe Negociacao, algo desse tipo:

constructor(data, quantidade, valor, mensagens) {        
    this._data = new Date(data.getTime());
    this._quantidade = quantidade;
    this._valor = valor;
    this._mensagens = [...mensagens].map(mensagem => new Mensagem(mensagem));
        Object.freeze(this);
}  

Espero ter ajudado.

Acho que isso resolve o problema sim, vou testar e volto aqui pra falar.

Desde já agradeço.

Magina, sempre que precisar não deixe de criar suas dúvidas.

Caso o problema tenha resolvido não deixe de marcar o tópico como solucionado para que possa ajudar outros alunos com problemas iguais/parecidos.

Abraços e bons estudos.