-
-
Notifications
You must be signed in to change notification settings - Fork 438
Glasgow_6 - HERISH TURKI - JS -Core-1-Coursework-Week2 #442
base: main
Are you sure you want to change the base?
Changes from all commits
3816547
33f046a
5519c41
01c9307
24487d7
2da777e
559ddd1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,9 @@ | |
1. the user should be 18 or older | ||
2. the user must be logged in | ||
*/ | ||
function isAcceptableUser(userAge, isLoggedIn) {} | ||
function isAcceptableUser(userAge, isLoggedIn) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Another great answer. How might you refactor this? Try writing this function a few different ways and thinking about it (this is also fun to do in Codewars). |
||
return userAge >= 18 && isLoggedIn; | ||
} | ||
|
||
/* | ||
Complete the function to apply discount percent based on how much is totalPrice in user cart. | ||
|
@@ -15,26 +17,67 @@ function isAcceptableUser(userAge, isLoggedIn) {} | |
is applieds and 142.5 should be returned) | ||
*/ | ||
|
||
function applyDiscount(totalPrice) {} | ||
function applyDiscount(totalPrice) { | ||
let discount = 0; | ||
if (totalPrice > 200) { | ||
discount = 0.1; | ||
} else if (totalPrice < 200) { | ||
discount = 0.05; | ||
} | ||
return totalPrice - totalPrice * discount; | ||
} | ||
|
||
// or | ||
|
||
// function applyDiscount(totalPrice) { | ||
// if (totalPrice > 200){ | ||
// return totalPrice * 0.9; | ||
// } else { | ||
// return totalPrice * 0.95; | ||
// } | ||
// } | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fab. I definitely prefer the code you chose over the commented out solution. Can you guess why? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Regarding my approach to these tasks, I set aside my coding skills and knowledge and write the possible logical solutions using sudo language. Then, I use code to implement them. Back to your - why question - I feel that the first solution is the most suitable since it is easy to understand, clear, and allows for the implementation of different discounts if needed. |
||
|
||
/* | ||
Complete the function to print to the console the odd numbers between 1 and limit (use a while loop): | ||
*/ | ||
function printOddNumbers(limit) {} | ||
function printOddNumbers(limit) { | ||
let baseNumber = 1; | ||
|
||
while (baseNumber <= limit) { | ||
if (baseNumber % 2 !== 0) { | ||
console.log(baseNumber); | ||
} | ||
baseNumber++; | ||
} | ||
} | ||
|
||
/* | ||
Complete the buyTwoGetTheCheapestFree function: if user buys two items, the cheapest item will be free! | ||
The function should return the price to be paid once the discount is applied. | ||
*/ | ||
function buyTwoGetTheCheapestFree(price1, price2) {} | ||
function buyTwoGetTheCheapestFree(price1, price2) { | ||
if (price1 >= price2) { | ||
return price1; | ||
} else { | ||
return price2; | ||
} | ||
} | ||
|
||
/* | ||
Complete the function to determine if it is suitable for a person to register based on their age! | ||
- if the person is 12 or younger it should return "You Are Too Young To Register" | ||
- if the person is older than 12 and younger than 90 it should return "You Can Register" | ||
- if the person is 90 or older it should return "You Don't Need To Register" | ||
*/ | ||
function canRegister(age) {} | ||
function canRegister(age) { | ||
if (age <= 12) { | ||
return "You Are Too Young To Register"; | ||
} else if (age > 12 && age < 90) { | ||
return "You Can Register"; | ||
} else { | ||
return "You Don't Need To Register"; | ||
} | ||
} | ||
|
||
/* | ||
Complete the function so that it prints out to the console numbers in reverse order starting at | ||
|
@@ -45,7 +88,11 @@ function canRegister(age) {} | |
) | ||
*/ | ||
|
||
function countReverse(number) {} | ||
function countReverse(number) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like this decrementing solution. I think the example solution uses a while loop, but I prefer yours! ;) |
||
for (let i = number; i >= 1; i--) { | ||
console.log(i); | ||
} | ||
} | ||
|
||
/* ======= TESTS - DO NOT MODIFY ===== */ | ||
|
||
|
@@ -90,11 +137,11 @@ describe("printOddNumbers", () => { | |
const consoleLogSpy = jest.spyOn(console, "log"); | ||
|
||
printOddNumbers(10); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(1,1); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(2,3); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(3,5); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(4,7); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(5,9); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(1, 1); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(2, 3); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(3, 5); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(4, 7); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(5, 9); | ||
|
||
consoleLogSpy.mockRestore(); | ||
}); | ||
|
@@ -141,13 +188,13 @@ describe("countReverse", () => { | |
const consoleLogSpy = jest.spyOn(console, "log"); | ||
|
||
countReverse(7); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(1,7); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(2,6); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(3,5); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(4,4); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(5,3); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(6,2); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(7,1); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(1, 7); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(2, 6); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(3, 5); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(4, 4); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(5, 3); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(6, 2); | ||
expect(consoleLogSpy).toHaveBeenNthCalledWith(7, 1); | ||
|
||
consoleLogSpy.mockRestore(); | ||
}); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This works and is a good answer.
It might be interesting now to explore ways to refactor and simply this function.
if (isHappy === true)
If isHappy is the same as true, do you need to make this check? What does isHappy evaluate to? (Replace the left hand side with the value of isHappy and read the code again. )