Skip to content
6 changes: 5 additions & 1 deletion Sprint-1/destructuring/exercise-1/exercise.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ const personOne = {

// Update the parameter to this function to make it work.
// Don't change anything else.
function introduceYourself(___________________________) {
function introduceYourself({
name = "NO NAME",
Comment thread
illicitonion marked this conversation as resolved.
Outdated
age = "NO AGE",
favouriteFood = "NO FOOD",
}) {
console.log(
`Hello, my name is ${name}. I am ${age} years old and my favourite food is ${favouriteFood}.`
);
Expand Down
42 changes: 42 additions & 0 deletions Sprint-1/destructuring/exercise-2/exercise.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,45 @@ let hogwarts = [
occupation: "Teacher",
},
];

function logPeopleByHouse(peopleList, houseName) {
Comment thread
illicitonion marked this conversation as resolved.
peopleList.forEach((person) => {
if (person.house === houseName) {
const { firstName, lastName } = person;
console.log(`${firstName} ${lastName}`);
}
});
}

function logTeachersWithPets(peopleList) {
peopleList.forEach((person) => {
if (person.occupation === "Teacher" && person.pet !== null) {
const { firstName, lastName } = person;
console.log(`${firstName} ${lastName}`);
}
});
}

// I thought I'd make a more general version which can work for any condition
// though there are no checks for invalid input
function getPersonByPredicate(list, predicate) {
list.forEach((person) => {
if (predicate(person)) {
const { firstName, lastName } = person;
console.log(`${firstName} ${lastName}`);
}
});
}

/*
Example usable of the above general purpose version which allows the user to filter by different
properties.

getPersonByPredicate(hogwarts, (person) => person.house === "Gryffindor");

getPersonByPredicate(
hogwarts,
(person) => person.occupation === "Teacher" && person.pet
);

*/
15 changes: 15 additions & 0 deletions Sprint-1/destructuring/exercise-3/exercise.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,18 @@ let order = [
{ itemName: "Hot Coffee", quantity: 2, unitPricePence: 100 },
{ itemName: "Hash Brown", quantity: 4, unitPricePence: 40 },
];

function printReceipt(order) {
console.log(`${"QTY".padEnd(8)}${"ITEM".padEnd(20)}TOTAL`);
let total = 0;
order.forEach((item) => {
const { quantity, itemName, unitPricePence } = item;
Comment thread
illicitonion marked this conversation as resolved.
Outdated
console.log(
`${String(quantity).padEnd(8)}${String(itemName).padEnd(20)}${((quantity * unitPricePence) / 100).toFixed(2)}`
Comment thread
RaihanSharif marked this conversation as resolved.
Outdated
);
total += quantity * unitPricePence;
});
console.log(`\nTotal: ${(total / 100).toFixed(2)}`);
}

printReceipt(order);
Loading