-
-
Notifications
You must be signed in to change notification settings - Fork 475
London_10-Anna_Hrychaniuk-JS-Core-1-Week1 #495
base: master
Are you sure you want to change the base?
Changes from all commits
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 |
|---|---|---|
|
|
@@ -5,7 +5,9 @@ | |
| Write a function that converts a price to USD (exchange rate is 1.4 $ to £) | ||
| */ | ||
|
|
||
| function convertToUSD() {} | ||
| function convertToUSD(amount) { | ||
| return amount * 1.4; | ||
| } | ||
|
|
||
| /* | ||
| CURRENCY CONVERSION | ||
|
|
@@ -15,7 +17,9 @@ function convertToUSD() {} | |
| They have also decided that they should add a 1% fee to all foreign transactions, which means you only convert 99% of the £ to BRL. | ||
| */ | ||
|
|
||
| function convertToBRL() {} | ||
| function convertToBRL(amount) { | ||
| return parseFloat((amount * 0.99 * 5.7).toFixed(2)); | ||
|
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. This is a clever solution and I like your use of parseFloat, well done! However, it is not that readable. Could you break it down into steps - perhaps working out the price after fee first. Also, could you be more specific with the labelling? i.e. instead of amount, GBP |
||
| } | ||
|
|
||
| /* ======= TESTS - DO NOT MODIFY ===== | ||
| There are some Tests in this file that will help you work out if your code is working. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,26 +16,29 @@ | |
| the final result to the variable goodCode | ||
| */ | ||
|
|
||
| function add() { | ||
|
|
||
| function add(a, b) { | ||
| return a + b; | ||
| } | ||
|
|
||
| function multiply() { | ||
|
|
||
| function multiply(a, b) { | ||
| return a * b; | ||
|
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. Nice and tidy with spacing and semi-colon, well done :) |
||
| } | ||
|
|
||
| function format() { | ||
| function format(digit) { | ||
| return `£${digit.toString()}`; | ||
|
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. Nice thinking, but do you need the toString? |
||
|
|
||
| } | ||
|
|
||
| const startingValue = 2; | ||
|
|
||
| // Why can this code be seen as bad practice? Comment your answer. | ||
| let badCode = | ||
| let badCode = format((startingValue + 10) * 2); | ||
|
|
||
|
Comment on lines
+35
to
+36
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. Could you use all your methods in this bad code example? |
||
| // functions are not really used, so it would work just for one case | ||
|
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. The badcode is really hard to read and is doing too much on one line so is prone to bugs :) |
||
|
|
||
| /* BETTER PRACTICE */ | ||
|
|
||
| let goodCode = | ||
| let goodCode = format(multiply(add(startingValue, 10), 2)); | ||
|
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. Nice getting this working on one line, but good code is readable in clear steps and stages. Can you break out these functions to call them on different lines? |
||
|
|
||
| /* ======= TESTS - DO NOT MODIFY ===== | ||
| There are some Tests in this file that will help you work out if your code is working. | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
| @@ -1,53 +1,70 @@ | ||||
| /** | ||||
|
|
||||
| Let's peer into the future using a Magic 8 Ball! | ||||
| https://en.wikipedia.org/wiki/Magic_8-Ball | ||||
|
|
||||
| There are a few steps to being able view the future though: | ||||
| * Ask a question | ||||
| * Shake the ball | ||||
| * Get an answer | ||||
| * Decide if it's positive or negative | ||||
|
|
||||
| The question can be anything, but the answers are fixed, | ||||
| and have different levels of positivity or negativity. | ||||
|
|
||||
| Below are the possible answers: | ||||
|
|
||||
| ## Very positive | ||||
| It is certain. | ||||
| It is decidedly so. | ||||
| Without a doubt. | ||||
| Yes - definitely. | ||||
| You may rely on it. | ||||
|
|
||||
| ## Positive | ||||
| As I see it, yes. | ||||
| Most likely. | ||||
| Outlook good. | ||||
| Yes. | ||||
| Signs point to yes. | ||||
|
|
||||
| ## Negative | ||||
| Reply hazy, try again. | ||||
| Ask again later. | ||||
| Better not tell you now. | ||||
| Cannot predict now. | ||||
| Concentrate and ask again. | ||||
|
|
||||
| ## Very negative | ||||
| Don't count on it. | ||||
| My reply is no. | ||||
| My sources say no. | ||||
| Outlook not so good. | ||||
| Very doubtful. | ||||
| */ | ||||
| // /** | ||||
|
|
||||
| // Let's peer into the future using a Magic 8 Ball! | ||||
| // https://en.wikipedia.org/wiki/Magic_8-Ball | ||||
|
|
||||
| // There are a few steps to being able view the future though: | ||||
| // * Ask a question | ||||
| // * Shake the ball | ||||
| // * Get an answer | ||||
| // * Decide if it's positive or negative | ||||
|
|
||||
| // The question can be anything, but the answers are fixed, | ||||
| // and have different levels of positivity or negativity. | ||||
|
|
||||
| // Below are the possible answers: | ||||
|
|
||||
|
|
||||
| let veryPositive = [ | ||||
|
|
||||
| "It is certain.", | ||||
| "It is decidedly so.", | ||||
| "Without a doubt.", | ||||
| "Yes - definitely.", | ||||
| "You may rely on it." | ||||
| ] | ||||
|
|
||||
| let positive = [ | ||||
|
|
||||
| "Positive", | ||||
| "As I see it, yes.", | ||||
| "Most likely.", | ||||
| "Outlook good.", | ||||
| "Yes.", | ||||
| "Signs point to yes." | ||||
| ] | ||||
|
|
||||
| let negative = [ | ||||
|
|
||||
| "Reply hazy, try again.", | ||||
| "Ask again later.", | ||||
| "Better not tell you now.", | ||||
| "Cannot predict now.", | ||||
| "Concentrate and ask again." | ||||
| ] | ||||
|
|
||||
| let veryNegative = [ | ||||
|
|
||||
| "Don't count on it.", | ||||
| "My reply is no.", | ||||
| "My sources say no.", | ||||
| "Outlook not so good.", | ||||
| "Very doubtful." | ||||
| ] | ||||
|
|
||||
|
|
||||
| // This should log "The ball has shaken!" | ||||
| // and return the answer. | ||||
|
|
||||
| function shakeBall() { | ||||
| //Write your code in here | ||||
| } | ||||
| console.log("The ball has shaken!"); | ||||
| // const allAnswers = veryPositive.concat(positive, negative, veryNegative); | ||||
| const allAnswers = [...veryPositive, ...positive, ...negative, ...veryNegative]; | ||||
| let answer = allAnswers [Math.floor(Math.random()*allAnswers.length)]; | ||||
| // console.log(prediction); | ||||
| return answer; | ||||
|
|
||||
| } | ||||
|
|
||||
| /* | ||||
| This function should say whether the answer it is given is | ||||
|
|
@@ -59,9 +76,24 @@ function shakeBall() { | |||
| This function should expect to be called with any value which was returned by the shakeBall function. | ||||
| */ | ||||
| function checkAnswer(answer) { | ||||
| if (veryPositive.indexOf(answer) >= 0 ) { | ||||
| return "very positive"; | ||||
| //Write your code in here | ||||
| } else if (positive.indexOf(answer) >= 0) { | ||||
| return "positive"; | ||||
| } else if (negative.indexOf(answer) >= 0) { | ||||
| return "negative"; | ||||
| } else { | ||||
| return "very negative"; | ||||
| } | ||||
|
|
||||
|
|
||||
| } | ||||
|
|
||||
|
|
||||
| console.log(checkAnswer(shakeBall())); | ||||
|
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.
Suggested change
|
||||
|
|
||||
|
|
||||
| /* | ||||
| ================================== | ||||
| ======= TESTS - DO NOT MODIFY ===== | ||||
|
|
||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,16 +1,17 @@ | ||
| // There are syntax errors in this code - can you fix it to pass the tests? | ||
|
|
||
| function addNumbers(a b c) { | ||
| function addNumbers(a, b, c) { | ||
|
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. Nice! |
||
| return a + b + c; | ||
| } | ||
|
|
||
| function introduceMe(name, age) | ||
| return `Hello, my {name}` is "and I am $age years old`; | ||
| function introduceMe(name, age) { | ||
| return `Hello, my name is ${name} and I am ${age} years old`; | ||
| } | ||
|
|
||
|
|
||
| function getTotal(a, b) { | ||
| total = a ++ b; | ||
|
|
||
| return "The total is total"; | ||
| total = a + b; | ||
|
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. Nice use of string interpolation |
||
| return `The total is ${total}`; | ||
| } | ||
|
|
||
| /* | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,16 +1,16 @@ | ||
| // The syntax for these functions is valid but there are some errors, find them and fix them | ||
|
|
||
| function trimWord(word) { | ||
| return wordtrim(); | ||
| return word.trim(); | ||
| } | ||
|
|
||
| function getStringLength(word) { | ||
| return "word".length(); | ||
| return word.length; | ||
| } | ||
|
|
||
| function multiply(a, b, c) { | ||
| a * b * c; | ||
| return; | ||
|
|
||
|
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. watch this trailing space, keep it tidy :) |
||
| return a * b * c; | ||
| } | ||
|
|
||
| /* | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,7 +5,9 @@ | |
| Sales tax is 20% of the price of the product. | ||
| */ | ||
|
|
||
| function calculateSalesTax() {} | ||
| function calculateSalesTax(netPrice) { | ||
| return netPrice * 1.2; | ||
|
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 am not sure if netprice is exactly correct to pass in (as I think netprice is after tax has been removed, and this is still before) but I like how specific and readable this label is. |
||
| } | ||
|
|
||
| /* | ||
| CURRENCY FORMATTING | ||
|
|
@@ -17,7 +19,9 @@ function calculateSalesTax() {} | |
| Remember that the prices must include the sales tax (hint: you already wrote a function for this!) | ||
| */ | ||
|
|
||
| function addTaxAndFormatCurrency() {} | ||
| function addTaxAndFormatCurrency(netPrice) { | ||
| return `£${calculateSalesTax(netPrice).toFixed(2)}`; | ||
| } | ||
|
|
||
| /* | ||
| =================================================== | ||
|
|
||
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.
Nice! But could you be clearer with the name 'amount'?