Oii Luiz, tudo bem?
Se ainda estiver com problemas, você poderia mandar o seu código completo? Assim podemos ter um contexto maior.
Mas levando em conta somente o código que você mandou, dá a entender que a função insereFavorito
está inserindo um livro nos favoritos sempre que é chamada, sem verificar se o livro já existe na lista de favoritos. Isso pode resultar em duplicatas na sua lista de livros favoritos.
A solução seria modificar a função para verificar se o livro já está na lista de favoritos antes de adicioná-lo. Dessa forma:
function insereFavorito(id){
const livros = JSON.parse(fs.readFileSync("livros.json"));
const favoritos = JSON.parse(fs.readFileSync("favoritos.json"));
const livroInserido = livros.find(livro => livro.id === id);
// Verifica se o livro já está na lista de favoritos
const jaEhFavorito = favoritos.some(favorito => favorito.id === livroInserido.id);
// Se não estiver na lista, adiciona o livro aos favoritos
if (!jaEhFavorito) {
const novaListaDeLivroFavoritos = [...favoritos, livroInserido];
fs.writeFileSync("favoritos.json", JSON.stringify(novaListaDeLivroFavoritos));
}
}
No código, a função some
é usada para verificar se algum livro na lista de favoritos tem o mesmo id
que o livro que está sendo inserido. Se o livro não for encontrado na lista de favoritos (jaEhFavorito
é false
), então ele é adicionado à lista.
E por favor, veja se a função insereFavorito
não está sendo chamada mais vezes do que o necessário, o que também poderia causar a inserção de múltiplas cópias do mesmo livro.
Essa a sugestão que dou levando em conta o código que você mandou.
Um abraço e bons estudos.