diff --git a/Sprint-1/destructuring/exercise-1/exercise.js b/Sprint-1/destructuring/exercise-1/exercise.js index 1ff2ac5c..d86bc7bf 100644 --- a/Sprint-1/destructuring/exercise-1/exercise.js +++ b/Sprint-1/destructuring/exercise-1/exercise.js @@ -6,7 +6,7 @@ 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}.` ); diff --git a/Sprint-1/destructuring/exercise-2/exercise.js b/Sprint-1/destructuring/exercise-2/exercise.js index e11b75eb..1538cc20 100644 --- a/Sprint-1/destructuring/exercise-2/exercise.js +++ b/Sprint-1/destructuring/exercise-2/exercise.js @@ -70,3 +70,36 @@ let hogwarts = [ occupation: "Teacher", }, ]; + +// line under headings +const logLine = () => { + console.log("=".repeat(20)); +}; + +const findGryffindorResidents = (residents) => { + console.log("GRYFFINDOR RESIDENTS"); + logLine(); + return residents + .reduce((acc, resident) => { + const { firstName, lastName, house } = resident; + if (house === "Gryffindor") acc.push(`${firstName} ${lastName}`); + return acc; + }, []) + .join("\n"); +}; + +console.log(findGryffindorResidents(hogwarts)); + +const findTeachersWithPets = (residents) => { + console.log("TEACHERS WITH PETS"); + logLine(); + return residents + .reduce((acc, resident) => { + const { firstName, lastName, pet, occupation } = resident; + if (pet && occupation === "Teacher") acc.push(`${firstName} ${lastName}`); + return acc; + }, []) + .join("\n"); +}; + +console.log(findTeachersWithPets(hogwarts)); diff --git a/Sprint-1/destructuring/exercise-3/exercise.js b/Sprint-1/destructuring/exercise-3/exercise.js index b3a36f4e..883f6b39 100644 --- a/Sprint-1/destructuring/exercise-3/exercise.js +++ b/Sprint-1/destructuring/exercise-3/exercise.js @@ -6,3 +6,19 @@ let order = [ { itemName: "Hot Coffee", quantity: 2, unitPricePence: 100 }, { itemName: "Hash Brown", quantity: 4, unitPricePence: 40 }, ]; + +const printReceipt = (order) => { + const totalBill = + order.reduce((acc, item) => acc + item.quantity * item.unitPricePence, 0) / + 100; + const colWidths = { qty: 7, itemName: 20, unitPricePence: 10 }; + const header = `${"QTY".padEnd(colWidths.qty)}${"ITEM".padEnd(colWidths.itemName)}${"TOTAL".padEnd(colWidths.unitPricePence)}`; + const table = order.reduce((acc, { itemName, quantity, unitPricePence }) => { + const totalItemPrice = ((quantity * unitPricePence) / 100).toFixed(2); + const row = `${String(quantity).padEnd(colWidths.qty)}${String(itemName).padEnd(colWidths.itemName)}${String(totalItemPrice).padEnd(colWidths.unitPricePence)}`; + return acc + row + "\n"; + }, header + "\n"); + return table + "\n" + `Total: ${totalBill.toFixed(2)}`; +}; + +console.log(printReceipt(order));