1
resposta

O meu funcionou apenas invertendo a ordem da lógica...

function filtrarLivros() {
    const elementoBtn = document.getElementById(this.id);
    const categoria = elementoBtn.value;
    //debugger
    let livrosFiltrados = categoria == 'disponivel' ? 
        livros.filter(livro => livro.categoria == categoria) : 
        livros.filter(livro => livro.quantidade > 0);

    exibirOsLivrosNaTela(livrosFiltrados);
};

Dessa forma, primeiro ele verifica as categorias que existem, depois ele confere se eles possuem a quantidade acima de 0. Outra forma seria colocar o value no HTML como 'disponivel'. Cara... essa aula não foi muito boa. Encontrei uma solução por conta propria que demorou demais pra fazer sentido na minha cabeça... e eu nem tenho certeza se está correta de verdade. Tive de aprender a usar o debbuger pra ter mais clareza sobre como o operador ternário funciona no JavaScript. Entendo que muitas vezes é melhor se esforçar e aprender na marra, por conta propria... mas hoje não tive um dia legal, deve ser por isso que fiquei chateado com essa aula.

1 resposta

Oi Guilherme, tudo bem?

Entendo que você tenha tido um dia difícil e que a aula pode ter parecido um pouco confusa.

A lógica que você implementou está correta. O operador ternário é uma forma concisa de escrever uma instrução condicional. Ele é composto por uma condição seguida por um ponto de interrogação (?), depois uma expressão para o caso de a condição ser verdadeira, seguida por dois pontos (:), e finalmente uma expressão para o caso de a condição ser falsa.

No seu código, a condição é categoria == 'disponivel'. Se essa condição for verdadeira, ou seja, se a categoria for 'disponivel', o código executa livros.filter(livro => livro.categoria == categoria), que filtra os livros pela categoria 'disponivel'. Se a condição for falsa, o código executa livros.filter(livro => livro.quantidade > 0), que filtra os livros com quantidade maior que zero.

O que acontece na aula é que a condição é a mesma (categoria == 'disponivel'), mas a lógica é invertida. Se a categoria for 'disponivel', a aula sugere filtrar os livros com quantidade maior que zero. Se a categoria não for 'disponivel', a aula sugere filtrar os livros pela categoria.

A diferença entre o seu código e o da aula é que você está filtrando os livros 'disponiveis' pela categoria, enquanto a aula sugere filtrar os livros 'disponiveis' pela quantidade de livros disponíveis.

Ambas as abordagens são válidas e dependem do que você quer alcançar com o seu código. Se você quer que a categoria 'disponivel' se refira a uma categoria específica de livros, a sua abordagem está correta. Se você quer que a categoria 'disponivel' se refira a todos os livros que estão disponíveis, independentemente da categoria, a abordagem da aula é a mais adequada.

Muito obrigada pelo seu feedback, ele nos ajuda a melhora sempre nossos cursos.

Um abraço e bons estudos.