Oi pessoal, tudo bem? Gostaria de uma ajuda para compreender a construção do find que foi colocada como sugestão de solução.
O que exatamente o find está fazendo no trecho em que considera o pipe duplo? Me parece que ele está operando como se fosse uma condicional, mas ao mesmo tempo não faz muito sentido visto que não tem um "if" associado à essa condição. Tentei seguir por esse caminho fazendo uma linha de "if" validando se o "livro.id" é ogual ao "id", e como else coloquei para que o livro.id == null, mas não deu certo.
function encontrarLivroPorId(id) {
return biblioteca.find(livro => livro.id === id) || null;
}
Como contorno eu fiz uma uma outra maneira usando filter, mais verbosa, mas que acho que funciona. Nese caso, eu valido se o tamanho do array que irá alimentar os "id" encontrados, é zero. E em caso afirmativo, o que significa que o id não foi encontrado, ele retorna uma mensagem de erro informando que o livro não foi encontrado.
Fica como sugestão:
//passo o json com os cadastramentos de livros
const estanteLivros = require('./estanteLivros.json')
//crio uma mensagem de erro padrão
const mensagemErro = 'livro não encontrado'
//crio a função de encontrar livro por ID
function encontrarLivroporId(idlivro){
//uso o filter para filtrar um livro que possui o "id" passado para a função
const listaLivros = estanteLivros.filter(livros => {
//caso o id do livro esteja na lista de livros, retorna o objeto livro
if(livros.id === idlivro){
return livros}
})
//verifica se o tamanhp do listalivros do filter é zero. o que indica que o id do livro
//não existe na lista de livro. caso afirmativo, retorna a mensagem de livro não encontrado
//padrão
if(listaLivros.length == 0){
return console.log(mensagemErro)
}
//exibe o conteúdo do lista livros.
console.log(listaLivros)
}