Ваша проблема заключается в saveBook
В этом for...loop
for (let i = 0; i < localStorage.length; i++) {
if (localStorage["books" + i] === newBook) {
bookExists = true;
break;
}
}
i
будет достигать только localStorage.length-1
, потому что i
должно быть меньше localStorage.length
. Затем, когда вы не можете найти книгу, вы устанавливаете localStorage
ключ на следующее:
localStorage.setItem('books' + localStorage.length, newBook);
Это, localStorage.length
, очевидно, больше, чем localStorage.length-1
. Итак, что произойдет, это то, что ваш for...loop
никогда не проверит последнюю книгу localStorage
.
Я бы предложил выбрать схему именования и затем двигаться вперед.
В данный момент вы проверяете на 0 индексирование имен, т.е. book0
, book1
. Однако ваши книги имеют 1 индексное наименование, т.е. book1
, book2
.