diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6b665aa --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} diff --git a/src/books.js b/src/books.js index c8119bb..b87fff9 100644 --- a/src/books.js +++ b/src/books.js @@ -34,67 +34,122 @@ // details: { // language: English // description: The Art of Learning takes readers through Waitzkin's unique journey to excellence. He explains in clear detail how a well-thought-out, principled approach to learning is what separates success from failure. -// } - +// } [0,1,2,3] // Your code here: -const booksArray = []; - - - +const booksArray = [ + { + book: 1, + title: "The Old Man and the Sea", + pages: 128, + author: "Ernest Hemingway", + details: { + language: "English", + description: + "One of Hemingway's most famous works, it tells the story of Santiago...", + }, + }, + { + book: 2, + title: "The Airbnb Story", + pages: 256, + author: "Leigh Gallagher", + details: { + language: "English", + description: + "This is the remarkable behind-the-scenes story of the creation and growth of Airbnb...", + }, + }, + { + book: 3, + title: "Educated - A Memoir", + pages: 352, + author: "Tara Westover", + details: { + language: "English", + description: + "Educated is an account of the struggle for self-invention...", + }, + }, + { + book: 4, + title: "The Art of Learning", + pages: 288, + author: "Josh Waitzkin", + details: { + language: "English", + description: + "The Art of Learning takes readers through Waitzkin's unique journey to excellence. He explains in clear detail how a well-thought-out, principled approach to learning is what separates success from failure.", + }, + }, +]; // Iteration 2 | Book Details -function getBookDetails() { +function getBookDetails(book) { // Your code here: - + return `${book.title} - ${book.author} - ${book.pages} pages`; } - - // Iteration 3 | Delete Language // Your code here: - - - +for (let key in booksArray) { + delete booksArray[key].details.language; +} // Iteration 4 | Estimated Reading Time // Your code here: - - - - +booksArray.forEach((book) => { + book.readingTime = Math.ceil((book.pages * 500) / 90); +}); // Bonus: Iteration 5 | Books Dictionary /* The `dictionary` is an object containing books grouped by author. The book info is stored in arrays with structure: [title, pages]. */ const dictionary = { - "J. K. Rowling": [ - ["Harry Potter and the Philosopher's Stone", 223], - ["Harry Potter and the Chamber of Secrets", 251], - ["Harry Potter and the Prisoner of Azkaban", 317], - ["Harry Potter and the Goblet of Fire", 636], - ], - "Neal Stephenson": [ - ["Cryptonomicon", 928], - ["Anathem", 1008], - ["Fall; or, Dodge in Hell", 896], - ], - "Malcolm Gladwell": [ - ["Outliers", 320], - ["Blink", 287], - ], + "J. K. Rowling": [ + ["Harry Potter and the Philosopher's Stone", 223], + ["Harry Potter and the Chamber of Secrets", 251], + ["Harry Potter and the Prisoner of Azkaban", 317], + ["Harry Potter and the Goblet of Fire", 636], + ], + "Neal Stephenson": [ + ["Cryptonomicon", 928], + ["Anathem", 1008], + ["Fall; or, Dodge in Hell", 896], + ], + "Malcolm Gladwell": [ + ["Outliers", 320], + ["Blink", 287], + ], }; -function booksByAuthor() { - // Your code here: - +function booksByAuthor(dictionary) { + let booksInfo = []; + + for (let author in dictionary) { + const books = dictionary[author]; + + for (let i = 0; i < books.length; i++) { + const bookArr = books[i]; + const title = bookArr[0]; + const pages = bookArr[1]; + const bookObject = { + title: title, + pages: pages, + author: author, + }; + booksInfo.push(bookObject); + } + } + return booksInfo; } - - - // Bonus: Iteration 6 | Average Page Count -function averagePageCount() { +function averagePageCount(books) { // Your code here: - + let sum = 0; + books.forEach((book) => { + sum += book.pages; + }); + return sum / books.length; }