Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

'undefined' no volume total

Tem algum erro no meu código que não tô conseguindo achar que faz o volume total aparecer como 'undefined', os outros volumes ficam ok, mas o total dos volumes não.

Classe ListaNegociacoes:

class ListaNegociacoes {
    constructor(armadilha) {
        this._negociacoes = [];
    }

    adiciona(negociacao) {
        this._negociacoes.push(negociacao);
    }

    get negociacoes() {
        return [].concat(this._negociacoes);
    }
    esvazia() {
        this._negociacoes = [];
    }
    get volumeTotal() {
        this._negociacoes.reduce((total, n) => total + n.volume, 0.0);
    }
}

Classe NegociacoesView:

class NegociacoesView extends Views {
    constructor(elemento) {
        super(elemento)
    }
    template(model) {
        return `
        <table class="table table-hover">
            <thead class="thead-light">
                <tr>
                    <th>DATA</th>
                    <th>QUANTIDADE</th>
                    <th>VALOR</th>
                    <th>VOLUME</th>
                </tr>
            </thead>
            <tbody>
                ${model.negociacoes.map(n => `
                    <tr>
                        <td>${DateHelper.formataData(n.data)}</td>
                        <td>${n.quantidade}</td>
                        <td>${n.valor}</td>
                        <td>${n.volume}</td>
                    </tr>
                `).join('')}
            </tbody>
            <tfoot>
                <td colspan='3'></td>
                <td>
                    ${model.volumeTotal}
                </td>
            </tfoot>
        </table>
        `;
    }
}

alguém pode me ajudar?

4 respostas

Oi Lucas tudo bem?

Poderia , por gentileza, colocar o código do seu projeto no github. Assim podemos analisar melhor o que está acontecendo.

solução!

Boa noite, Lucas! Como vai?

Aparentemente o problema é vc ter esquecido de retornar o resultado do reduce() dentro do método get volumeTotal()! O correto seria fazer:

get volumeTotal() {
     return this._negociacoes.reduce((total, n) => total + n.volume, 0.0);
}

Faça essa correção e veja se as coisas funcionam corretamente como vc esperava!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Resolvido Gabriel, obrigado pela ajuda cara :)

Por nada, Lucas! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!