From c677bc8d05d010c82af419ace8a42afc5bbbfadc Mon Sep 17 00:00:00 2001 From: MarioLJFerreira Date: Sat, 21 Jun 2025 14:10:41 +0100 Subject: [PATCH] done+bonuses --- src/books.js | 98 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 89 insertions(+), 9 deletions(-) diff --git a/src/books.js b/src/books.js index c8119bb..3406f13 100644 --- a/src/books.js +++ b/src/books.js @@ -38,29 +38,76 @@ // 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." + } +} +]; // Iteration 2 | Book Details -function getBookDetails() { +function getBookDetails(bookObj) { // Your code here: - + return `${bookObj.title} - ${bookObj.author} - ${bookObj.pages} pages`; } // Iteration 3 | Delete Language // Your code here: +booksArray.forEach(element => { + delete element.details.language; +}); +//console.log(booksArray); // Iteration 4 | Estimated Reading Time // Your code here: +booksArray.forEach(element => { + Object.defineProperty(element ,"readingTime", {value: Math.ceil((element.pages * 500) / 90)}); +}); - +//console.log(booksArray); // Bonus: Iteration 5 | Books Dictionary @@ -86,15 +133,48 @@ const dictionary = { ], }; -function booksByAuthor() { +function booksByAuthor(dictionary) { // Your code here: - + const booksArray = []; + for (const property in dictionary) { + dictionary[property].forEach(element => { + booksArray.push( + { + title: element[0], + pages: element[1], + author: property + } + ) + }); + } + return booksArray; } - +//console.log(booksByAuthor(dictionary)) // Bonus: Iteration 6 | Average Page Count -function averagePageCount() { +function averagePageCount(books) { // Your code here: - + let pageSum = 0; + books.forEach(element => { + pageSum += element.pages; + }); + return pageSum/books.length; } + +/*console.log(averagePageCount([ + { + title: "Harry Potter and the Philosopher's Stone", + pages: 223, + author: "J. K. Rowling", + }, + { + title: "Harry Potter and the Chamber of Secrets", + pages: 251, + author: "J. K. Rowling", + }, + { + title: "Harry Potter and the Prisoner of Azkaban", + pages: 317, + author: "J. K. Rowling", + },]));*/ \ No newline at end of file