From 9424e088b785633a12d4b02e25cb8e4bcbf3c60d Mon Sep 17 00:00:00 2001 From: Ali Date: Fri, 28 Nov 2025 19:50:43 +0000 Subject: [PATCH] Implement destructuring in introduceYourself function and add Gryffindor member and teacher retrieval functions --- Sprint-1/destructuring/exercise-1/exercise.js | 4 ++-- Sprint-1/destructuring/exercise-2/exercise.js | 19 +++++++++++++++++ Sprint-1/destructuring/exercise-3/exercise.js | 21 +++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/Sprint-1/destructuring/exercise-1/exercise.js b/Sprint-1/destructuring/exercise-1/exercise.js index 1ff2ac5c..4fe62432 100644 --- a/Sprint-1/destructuring/exercise-1/exercise.js +++ b/Sprint-1/destructuring/exercise-1/exercise.js @@ -6,10 +6,10 @@ const personOne = { // Update the parameter to this function to make it work. // Don't change anything else. -function introduceYourself(___________________________) { +function introduceYourself({name, age, favouriteFood}) { console.log( `Hello, my name is ${name}. I am ${age} years old and my favourite food is ${favouriteFood}.` ); } -introduceYourself(personOne); +introduceYourself(personOne); \ No newline at end of file diff --git a/Sprint-1/destructuring/exercise-2/exercise.js b/Sprint-1/destructuring/exercise-2/exercise.js index e11b75eb..56f9d2b8 100644 --- a/Sprint-1/destructuring/exercise-2/exercise.js +++ b/Sprint-1/destructuring/exercise-2/exercise.js @@ -70,3 +70,22 @@ let hogwarts = [ occupation: "Teacher", }, ]; + +function getGryffindorMembers(arr) { + const gryffindorMembers = arr.filter(({ house }) => house === "Gryffindor").map(({ firstName, lastName }) => `${firstName} ${lastName}`).join('\n'); + + console.log(gryffindorMembers); +} + +getGryffindorMembers(hogwarts); + +function getTeachersWithPets(arr) { + const teachersWithPets = arr.filter(({ occupation, pet }) => occupation === "Teacher" && pet).map(({ firstName, lastName }) => + `${firstName} ${lastName}` + ).join('\n'); + + + console.log(teachersWithPets); +} + +getTeachersWithPets(hogwarts); \ No newline at end of file diff --git a/Sprint-1/destructuring/exercise-3/exercise.js b/Sprint-1/destructuring/exercise-3/exercise.js index b3a36f4e..8865f895 100644 --- a/Sprint-1/destructuring/exercise-3/exercise.js +++ b/Sprint-1/destructuring/exercise-3/exercise.js @@ -6,3 +6,24 @@ let order = [ { itemName: "Hot Coffee", quantity: 2, unitPricePence: 100 }, { itemName: "Hash Brown", quantity: 4, unitPricePence: 40 }, ]; + +function Receipt(order){ + let total = 0 + let qtyWidth = 3 + let itemWidth = 4 + const receiptLines = order.map(({itemName, quantity, unitPricePence}) => { + const itemTotalPounds = (quantity * (unitPricePence / 100)); + qtyWidth = Math.max(qtyWidth, String(quantity).length); + itemWidth = Math.max(itemWidth, itemName.length); + return { itemName, quantity, itemTotalPounds }; + }) + console.log('QTY'.padEnd(qtyWidth+4), 'ITEM'.padEnd(itemWidth+3), 'TOTAL'); + receiptLines.forEach(({itemName, quantity, itemTotalPounds}) => { + total += itemTotalPounds; + console.log(String(quantity).padEnd(qtyWidth+4), itemName.padEnd(itemWidth+3), `${itemTotalPounds.toFixed(2)}`); + }) + console.log(`\nTotal: ${total.toFixed(2)}`); + +} + +Receipt(order); \ No newline at end of file