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

[Dúvida] Desafio - Lista de Exercícios Aula 05

Prezados,

No exercício de número 1, em que solicita criar uma function encontrarLivroPorId(), realizei da seguinte maneira:

const biblioteca = [
    { id: 1, titulo: "O Senhor dos Anéis", autor: "J.R.R. Tolkien", anoPublicacao: 1954 },
    { id: 2, titulo: "Dom Quixote", autor: "Miguel de Cervantes", anoPublicacao: 1605 },
    { id: 3, titulo: "1984", autor: "George Orwell", anoPublicacao: 1949 }
];


function encontrarLivroPorId(lista, chave, valor) {
    return lista.find((livro) => livro[chave].includes(valor));
}

const livroEncontrado = encontrarLivroPorId(biblioteca, 'id', 3);
console.log(livroEncontrado);

E tem como o retorno o seguinte erro:

"return lista.find((livro) => livro[chave].includes(valor)); ^ TypeError: livro[chave].includes is not a function"

Gostaria de entender o motivo de disparar este erro.

A forma apresentada pela "Opinião do Instrutor" está clara e já consegui absorver o método utilizado. Mas realmente fiquei encucado com esse erro, pois a meu ver a lógica estaria correta.

Desde já agradeço a elucidação!

2 respostas
solução!

Olá, eu testei o código entendi o problema, o método includes é um método usando em arrays, porém o método "find" não retorna um array, mas sim o primeiro elemento que ele encontrar, então ele retorna o primeiro elemento que tem um "id" válido no array "lista" que nesse caso é bibliotea

Foi assim que eu testei

const biblioteca = [
    { id: 1, titulo: "O Senhor dos Anéis", autor: "J.R.R. Tolkien", anoPublicacao: 1954 },
    { id: 2, titulo: "Dom Quixote", autor: "Miguel de Cervantes", anoPublicacao: 1605 },
    { id: 3, titulo: "1984", autor: "George Orwell", anoPublicacao: 1949 }
];


console.log(biblioteca.find(ele => ele["id"]))  // {id: 1, titulo: 'O Senhor dos Anéis', autor: 'J.R.R. Tolkien', anoPublicacao: 1954}

Então quando ele tenta usar o includes da erro, pq você tem o objeto "{id: 1, titulo: 'O Senhor dos Anéis', autor: 'J.R.R. Tolkien', anoPublicacao: 1954}" e não um array de objetos que é onde um "include" seria cabível

Perfeita explicação, Ricardo!

Muito obrigado, agora ficou claro!!

Perdi um bom tempo tentando entender sozinho, mas faz parte.

Obrigado mais uma vez!