2
respostas

[Dúvida] Descontos não aparecem

Fiz o código acompanhando a aula e no método Map para colocar os descontos nos livros não funcionou, inclusive, peguei o arquivo https://github.com/alura-cursos/js-metodos-array e executando o código dele, não funciona também.

Códigos:

main.js

let livros = []
const endpointDaAPI = 'https://guilhermeonrails.github.io/casadocodigo/livros.json'
getBuscarLivrosDaAPI()
const elementoParaInserirLivros = document.getElementById('livros')

async function getBuscarLivrosDaAPI() {
    const res = await fetch(endpointDaAPI)
    livros = await res.json()
    console.table(livros) //mostra array como tabela
    exibirOsLivrosNaTela(livros)
}

function exibirOsLivrosNaTela(listaDeLivros) {
    listaDeLivros.forEach(livro => {
        elementoParaInserirLivros.innerHTML += `
        <div class="livro">
        <img class="livro__imagens" src="${livro.imagem}"
          alt="${livro.alt}" />
        <h2 class="livro__titulo">
          ${livro.titulo}
        </h2>
        <p class="livro__descricao">${livro.autor}</p>
        <p class="livro__preco" id="preco">R$${livro.preco}</p>
        <div class="tags">
          <span class="tag">${livro.categoria}</span>
        </div>
      </div>
        `
    })
}

metodoForEach.js

function exibirOsLivrosNaTela(listaDeLivros){
    listaDeLivros.forEach(livro => {
        elementoParaInserirLivros.innerHTML += `
        <div class="livro">
      <img class="livro__imagens" src=${livro.imagem} alt=${livro.alt} />
      <h2 class="livro__titulo">${livro.titulo}</h2>
      <p class="livro__descricao">${livro.autor}</p>
      <p class="livro__preco" id="preco">R$ ${livro.preco.toFixed(2)}</p>
      <div class="tags">
        <span class="tag">${livro.categoria}</span>
        <span class="tag">Back-end</span>
      </div>
    </div>
        `
    })
}

metodoMap.js

function aplicarDesconto(livros){
    const desconto = 0.3
    livrosComDesconto = livros.map(livro => {
        return {...livro, preco: livro.preco - (livro.preco * desconto)}
    })
    return livrosComDesconto
}
2 respostas

Olá Ezio, tudo bem?

Só para ter certeza, você fez a alteração do trecho a seguir...

livros = await res.json()
console.table(livros) //mostra array como tabela
exibirOsLivrosNaTela(livros)

... para ...

livros = await res.json()
let livrosComDesconto = aplicarDesconto(livros)
exibirOsLivrosNaTela(livrosComDesconto)

... seguindo as orientações do vídeo da aula?

Caso não tenha feito, faça essas alterações e veja se funciona. Se não, me avise que voltamos a analisar todo o código e ver o que pode estar acontecendo, blz?

Att.

Ezio Roberto boa tarde no seu arquivo main.js na sua função getBuscarLivrosDaAPI não tem nenhuma let livrosComDescontos = let livrosComDescontos = aplicarDesconto(livros) ou seja a função não esta sendo chamada nele e nem sendo salva em uma variavel para ser passada para a função exibirOsLivrosNaTela

Sua função getBuscarLivrosDaAPI precisa estar assim

async function getBuscarLivrosDaAPI(){
    const res = await fetch(endPointDaAPI)
    livros = await res.json()
    let livrosComDescontos = aplicarDesconto(livros)
    exibirOsLivroNaTela(livrosComDescontos)
}

Como eu falei sobre a função aplicarDesconto não estar sendo chamada no seu arquivo, e o que eu deixei aqui nesse comentario esta chamando a função, salvando em uma variavel e enviando para a outra função como parâmetro