3
respostas

[Sugestão] Desconto sendo perdido nos filtros

Quando passa o filtro de livros front-end, back-end e dados, o desconto dos livros é perdido. Uma sólução básica é passar a função aplicarDencontos() no final da função filtrarLivros()

function filtrarLivros(){
    const elementoBtn = document.getElementById(this.id)
    const categoria = elementoBtn.value
    let livrosFiltrados = livros.filter(livro => livro.categoria == categoria)
    exibirOsLivrosNaTela(aplicarDesconto(livrosFiltrados))
}
3 respostas

Olá, Mateus!

Obrigado pela sua sugestão! Sempre que tiver outras sugestões de melhorias, fique à vontade para compartilhar com a galera aqui no Fórum!

Bons estudos! :)

Boa, Mateus!

Percebi que isso também será necessário no ordenarLivrosPorPreco( )

function ordenarLivrosPorPreco() {
    let livrosOrdenados = livros.sort((a, b) => a.preco - b.preco)
    exibirOsLivrosNaTela(aplicarDesconto(livrosOrdenados))
}

Boa! Eu resolvi isso, mas não sei se de um jeito certo ^^'

Quando foi usado o map pra aplicar os descontos, uma cópia da tabela de livros vinda do endPoint é feita. Então a tabela da requisição do inicio não é alterada. Sempre que referenciamos ela, estamos referenciando o valor antigo.

O que eu fiz, foi iterar a tabela de livros com um for each e alterar of valores dos preços. Assim a tabela é atualizada para as próximas referencias. O lado negativo é que eu perdi o preço antes do desconto :v

Talvez você possa criar uma nova variável com o preço atualizado já no carregamento da página, e usar essa tabela atualizada no ligar da variavel livros