Estoy haciendo algunas funciones que recorren mi matriz 2D y verifican si el valor en un índice coincide con el parámetro que pasé. Pero sigo recibiendo este error de "Error de tipo: no se puede leer la propiedad '1' de indefinido en findBookByTitle"
Alguna sugerencia, he probado de todo :(
const BooksInfo = []; function addBook(BookID, BookTitle, Author, Price, Quantity){ let newBook = [BookID,BookTitle,Author,Price,Quantity] BooksInfo.push(newBook); } addBook(1,"Start with Why","Simon Sinek", 80.0, 13); addBook(2, "But how do it know", "J. Clark Scott", 59.9, 22); addBook(3, "Clean Code", "Rober Cecil Martin", 50.0, 5); addBook(4, "Zero to One", "Peter Thiel", 45.0, 12); addBook(5, "You don't know JS", "Kyle Simpson", 39.9, 9); //console.log(BooksInfo); function findBookByID(BookID){ for(i=0; i <= BooksInfo.length; i++){ if(BooksInfo[i][0] == BookID){ console.log(BooksInfo[i]) } } } function findBookByTitle(BookTitle){ for(i=0; i <= BooksInfo.length; i++){ if(BooksInfo[i][1] == BookTitle){ console.log(BooksInfo[i]) } } } function findBookByAuthor(Author){ for(i=0; i <= BooksInfo.length; i++){ if(BooksInfo[i][2] == Author){ console.log(BooksInfo[i]) } } } findBookByAuthor("Kyle Simpson"); findBookByID(1); findBookByTitle("But how do it know");function findBookByTitle(BookTitle){ for(i=0; i < BooksInfo.length; i++){ if(BooksInfo[i][1] == BookTitle){ console.log(BooksInfo[i]) } } }dado que está recorriendo desde el índice 0 hasta el último índice, no puede incluir el último número en booksInfo.length. por ejemplo: aquí, su booksInfo.length = 5, pasando del índice 0 al 5, es 6 veces la iteración para i(0,1,2,3,4,5)
Haz tu vida mucho más fácil (y tu código mucho más conciso y legible) usando objetos en lugar de representar cada libro en una matriz:
const BooksInfo = []; function addBook(BookID, BookTitle, Author, Price, Quantity){ let newBook = {BookID,BookTitle,Author,Price,Quantity}; BooksInfo.push(newBook); } addBook(1,"Start with Why","Simon Sinek", 80.0, 13); addBook(2, "But how do it know", "J. Clark Scott", 59.9, 22); addBook(3, "Clean Code", "Rober Cecil Martin", 50.0, 5); addBook(4, "Zero to One", "Peter Thiel", 45.0, 12); addBook(5, "You don't know JS", "Kyle Simpson", 39.9, 9); function findBookByID(BookID){ return BooksInfo.find(book => book.BookID === BookID); } function findBookByTitle(BookTitle){ return BooksInfo.find(book => book.BookTitle === BookTitle); } function findBookByAuthor(Author){ return BooksInfo.find(book => book.Author === Author); } console.log(findBookByAuthor("Kyle Simpson")); console.log(findBookByID(1)); console.log(findBookByTitle("But how do it know"));