From 6bb3c0ba4c8963b507ab3b96327713f4649df4e9 Mon Sep 17 00:00:00 2001 From: Roberto Slawinski Date: Fri, 9 May 2025 20:11:55 +0100 Subject: [PATCH] Lab Solved --- src/books.js | 135 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 98 insertions(+), 37 deletions(-) diff --git a/src/books.js b/src/books.js index c8119bb..7b5d445 100644 --- a/src/books.js +++ b/src/books.js @@ -38,15 +38,62 @@ // Your code here: -const booksArray = []; +const booksArray = [ + { + 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..." + } +}, +{ + title: "The Airbnb Story", + pages: 256, + author: "Leight Gallagher", + details: { + language: "English", + description: "This is the remarkable behind-the-scenes story of the creation and growth of Airbnb..." +} +}, +{ + title: "Educated - A Memoir", + pages: 352, + author: "Tara Westover", + details: { + language: "English", + description: "Educated is an account of the struggle for self-invention..." +} +}, +{ + 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." +} +} +]; +console.log(booksArray); -// Iteration 2 | Book Details -function getBookDetails() { - // Your code here: + +// Iteration 2 | Book Details +// function getBookDetails() { +// // Your code here: + +function getBookDetails(book) { + + if (!book || typeof book !== "object") { + return "Invalid book"; + } + + return `${book.title} - ${book.author} - ${book.pages} pages`; } @@ -55,46 +102,60 @@ function getBookDetails() { // Your code here: +function deleteLanguageFromBooks(array) { + array.forEach((book) => { + delete book.details.language; + }); +} +deleteLanguageFromBooks(booksArray); // Iteration 4 | Estimated Reading Time // Your code here: - - - -// 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], - ], -}; - -function booksByAuthor() { - // Your code here: - +function addReadingTimeToBooks(array) { + array.forEach((book) => { + + const readingTime = Math.ceil((book.pages * 500) / 90); + book.readingTime = readingTime; + }); } +addReadingTimeToBooks(booksArray); + + + +// // 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], +// ], +// }; + +// function booksByAuthor() { +// // Your code here: + +// } -// Bonus: Iteration 6 | Average Page Count -function averagePageCount() { - // Your code here: +// // Bonus: Iteration 6 | Average Page Count +// function averagePageCount() { +// // Your code here: -} +// }