diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..f21ac442b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "cSpell.ignoreWords": [ + "greeting", + "shouty" + ] +} \ No newline at end of file diff --git a/exercises/B-hello-world/exercise.js b/exercises/B-hello-world/exercise.js index b179ee953..84550ab9e 100644 --- a/exercises/B-hello-world/exercise.js +++ b/exercises/B-hello-world/exercise.js @@ -1 +1,7 @@ console.log("Hello world"); +console.log("Hello world. I just started learning JavaScript"); +console.log("It's pretty exciting to be actually starting JavaScript"); +console.log( + "What happens if I remove the quotation marks? => (SyntaxError: missing ) after argument list)" +); +console.log(45); diff --git a/exercises/C-variables/exercise.js b/exercises/C-variables/exercise.js index a6bbb9786..33dd2efdb 100644 --- a/exercises/C-variables/exercise.js +++ b/exercises/C-variables/exercise.js @@ -1,3 +1,7 @@ // Start by creating a variable `greeting` +let greeting = "Hello, nice to meet you"; + +console.log(greeting); +console.log(greeting); console.log(greeting); diff --git a/exercises/D-strings/exercise.js b/exercises/D-strings/exercise.js index 2cffa6a81..29a45b07b 100644 --- a/exercises/D-strings/exercise.js +++ b/exercises/D-strings/exercise.js @@ -1,3 +1,6 @@ // Start by creating a variable `message` +let message = "This is a string"; +let messageType = typeof message; console.log(message); +console.log(messageType); diff --git a/exercises/E-strings-concatenation/exercise.js b/exercises/E-strings-concatenation/exercise.js index 2cffa6a81..41feda94c 100644 --- a/exercises/E-strings-concatenation/exercise.js +++ b/exercises/E-strings-concatenation/exercise.js @@ -1,3 +1,7 @@ // Start by creating a variable `message` -console.log(message); +let greetingStart = "Hello, my name is"; +let name = "Terry"; + +let greeting = greetingStart + " " + name; +console.log(greeting); diff --git a/exercises/F-strings-methods/exercise.js b/exercises/F-strings-methods/exercise.js index 2cffa6a81..4ad5d8ba4 100644 --- a/exercises/F-strings-methods/exercise.js +++ b/exercises/F-strings-methods/exercise.js @@ -1,3 +1,7 @@ // Start by creating a variable `message` +const firstName = "Terry"; +const nameLength = firstName.length; -console.log(message); +console.log( + `My name is ${firstName} and my name is ${nameLength} characters long` +); diff --git a/exercises/F-strings-methods/exercise2.js b/exercises/F-strings-methods/exercise2.js index b4b46943d..4c419fd7a 100644 --- a/exercises/F-strings-methods/exercise2.js +++ b/exercises/F-strings-methods/exercise2.js @@ -1,3 +1,9 @@ const name = " Daniel "; +console.log(name.length); +const trimmedName = name.trim(); +console.log(trimmedName); +const nameLength = trimmedName.length; +console.log(nameLength); +const message = `My name is ${trimmedName} and my name is ${nameLength} characters long`; console.log(message); diff --git a/exercises/G-numbers/README.md b/exercises/G-numbers/README.md index 76a79dab2..6775ad18f 100644 --- a/exercises/G-numbers/README.md +++ b/exercises/G-numbers/README.md @@ -25,5 +25,5 @@ var difference = 10 - 2; // 8 ``` Number of students: 15 Number of mentors: 8 -Total numnber of students and mentors: 23 +Total number of students and mentors: 23 ``` diff --git a/exercises/G-numbers/exercise.js b/exercises/G-numbers/exercise.js index 49e7bc00b..bae334f4d 100644 --- a/exercises/G-numbers/exercise.js +++ b/exercises/G-numbers/exercise.js @@ -1 +1,11 @@ // Start by creating a variables `numberOfStudents` and `numberOfMentors` + +const numberOfStudents = 15; +const numberOfMentors = 8; + +const totalNumber = `Total number of students and mentors: ${ + numberOfStudents + numberOfMentors +}`; +console.log(`Number of students: ${numberOfStudents}`); +console.log(`Number of mentors: ${numberOfMentors}`); +console.log(totalNumber); diff --git a/exercises/I-floats/exercise.js b/exercises/I-floats/exercise.js index a5bbcd852..0f709a829 100644 --- a/exercises/I-floats/exercise.js +++ b/exercises/I-floats/exercise.js @@ -1,2 +1,20 @@ var numberOfStudents = 15; var numberOfMentors = 8; +var totalNumber = numberOfStudents + numberOfMentors; +console.log(totalNumber); + +// Student percentage +const percentageOfStudents = (numberOfStudents / totalNumber) * 100; +console.log(percentageOfStudents); +const roundedStudentPercentage = Math.round(percentageOfStudents); +console.log(roundedStudentPercentage); + +// Mentor percentage +const percentageOfMentors = (numberOfMentors / totalNumber) * 100; +console.log(percentageOfMentors); +const roundedMentorPercentage = Math.round(percentageOfMentors); +console.log(roundedMentorPercentage); + +// Result +console.log(`Percentage students: ${roundedStudentPercentage}%`); +console.log(`Percentage mentors: ${roundedMentorPercentage}%`); diff --git a/exercises/J-functions/exercise.js b/exercises/J-functions/exercise.js index 0ae5850e5..e7278f7bd 100644 --- a/exercises/J-functions/exercise.js +++ b/exercises/J-functions/exercise.js @@ -1,5 +1,5 @@ function halve(number) { - // complete the function here + return number / 2; } var result = halve(12); diff --git a/exercises/J-functions/exercise2.js b/exercises/J-functions/exercise2.js index 82ef5e780..95ef62512 100644 --- a/exercises/J-functions/exercise2.js +++ b/exercises/J-functions/exercise2.js @@ -1,5 +1,5 @@ function triple(number) { - // complete function here + return number * 3; } var result = triple(12); diff --git a/exercises/K-functions-parameters/exercise.js b/exercises/K-functions-parameters/exercise.js index 8d5db5e69..4614501b1 100644 --- a/exercises/K-functions-parameters/exercise.js +++ b/exercises/K-functions-parameters/exercise.js @@ -1,6 +1,6 @@ // Complete the function so that it takes input parameters -function multiply() { - // Calculate the result of the function and return it +function multiply(num1, num2) { + return num1 * num2; } // Assign the result of calling the function the variable `result` diff --git a/exercises/K-functions-parameters/exercise2.js b/exercises/K-functions-parameters/exercise2.js index db7a8904b..425770705 100644 --- a/exercises/K-functions-parameters/exercise2.js +++ b/exercises/K-functions-parameters/exercise2.js @@ -1,4 +1,6 @@ -// Declare your function first +function divide(num1, num2) { + return num1 / num2; +} var result = divide(3, 4); diff --git a/exercises/K-functions-parameters/exercise3.js b/exercises/K-functions-parameters/exercise3.js index 537e9f4ec..45954b5ac 100644 --- a/exercises/K-functions-parameters/exercise3.js +++ b/exercises/K-functions-parameters/exercise3.js @@ -1,4 +1,6 @@ -// Write your function here +function createGreeting(name) { + return `Hello, my name is ${name}`; +} var greeting = createGreeting("Daniel"); diff --git a/exercises/K-functions-parameters/exercise4.js b/exercises/K-functions-parameters/exercise4.js index 7ab44589e..b67307257 100644 --- a/exercises/K-functions-parameters/exercise4.js +++ b/exercises/K-functions-parameters/exercise4.js @@ -1,5 +1,8 @@ -// Declare your function first +function addTwoNumbers(num1, num2) { + return num1 + num2; +} // Call the function and assign to a variable `sum` +const sum = addTwoNumbers(13, 124); console.log(sum); diff --git a/exercises/K-functions-parameters/exercise5.js b/exercises/K-functions-parameters/exercise5.js index 7c5bcd605..69cd231f5 100644 --- a/exercises/K-functions-parameters/exercise5.js +++ b/exercises/K-functions-parameters/exercise5.js @@ -1,4 +1,6 @@ -// Declare your function here +function createLongGreeting(name, age) { + return `Hello, my name is ${name} and I'm ${age} years old`; +} const greeting = createLongGreeting("Daniel", 30); diff --git a/exercises/L-functions-nested/exercise.js b/exercises/L-functions-nested/exercise.js index a5d377442..b0eab80de 100644 --- a/exercises/L-functions-nested/exercise.js +++ b/exercises/L-functions-nested/exercise.js @@ -3,3 +3,16 @@ var mentor2 = "Irina"; var mentor3 = "Mimi"; var mentor4 = "Rob"; var mentor5 = "Yohannes"; + +function shoutyGreeting(name) { + function capitaliseName(name) { + return name.toUpperCase(); + } + return `HELLO ${capitaliseName(name)}`; +} + +console.log(shoutyGreeting(mentor1)); +console.log(shoutyGreeting(mentor2)); +console.log(shoutyGreeting(mentor3)); +console.log(shoutyGreeting(mentor4)); +console.log(shoutyGreeting(mentor5)); diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 07391e15f..e5eb1e496 100644 --- a/extra/1-currency-conversion.js +++ b/extra/1-currency-conversion.js @@ -5,7 +5,9 @@ Write a function that converts a price to USD (exchange rate is 1.4 $ to £) */ -function convertToUSD() {} +function convertToUSD(amountInGBP) { + return amountInGBP * 1.4; +} /* CURRENCY FORMATTING @@ -15,7 +17,10 @@ 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(amountInGBP) { + const convertedAmount = ((amountInGBP * 5.7) / 100) * 99; + return Number(convertedAmount.toFixed(2)); +} /* ======= TESTS - DO NOT MODIFY ===== There are some Tests in this file that will help you work out if your code is working. diff --git a/extra/2-piping.js b/extra/2-piping.js index 9c8ebc76a..be82d3846 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,26 +16,41 @@ the final result to the variable goodCode */ -function add() { - +function add(num1, num2) { + return num1 + num2; } -function multiply() { - +function multiply(num1, num2) { + return num1 * num2; } -function format() { - +function format(number) { + return `£${number}`; } const startingValue = 2; +// 3. Write a more readable version of what you wrote in step 2 under the BETTER PRACTICE comment. Assign +// the final result to the variable goodCode +// */ + // Why can this code be seen as bad practice? Comment your answer. -let badCode = +// The code is hard to read and would not be easy to understand for someone new to the code. + +//! **** BAD CODE **** + +let badCode = format(multiply(add(startingValue, 10), 2)); + +console.log(badCode); + +//! **** GOOD CODE **** + +const addFunc = add(startingValue, 10); // 12 +const multiplyFunc = multiply(2, addFunc); -/* BETTER PRACTICE */ +let goodCode = format(multiplyFunc); -let goodCode = +console.log(goodCode); /* ======= TESTS - DO NOT MODIFY ===== There are some Tests in this file that will help you work out if your code is working. diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 7626877e7..717959521 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -45,8 +45,41 @@ // This should log "The ball has shaken!" // and return the answer. + +let answers = [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes - definitely.", + "You may rely on it.", + "As I see it, yes.", + "Most likely.", + "Outlook good.", + "Yes.", + "Signs point to yes.", + "Reply hazy, try again.", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", + "Don't count on it.", + "My reply is no.", + "My sources say no.", + "Outlook not so good.", + "Very doubtful.", +]; + +function generateNumber() { + return Math.floor(Math.random() * 20); +} + function shakeBall() { - //Write your code in here + let randomChoice = generateNumber(); + let chosenAnswer = answers[randomChoice]; + + console.log("The ball has shaken!"); + + return chosenAnswer; } /* @@ -58,8 +91,31 @@ function shakeBall() { This function should expect to be called with any value which was returned by the shakeBall function. */ + +// **** IF/ELSE **** +// function checkAnswer(answer) { +// let indexOfAnswer = answers.indexOf(answer); + +// if (indexOfAnswer < 5) { +// return "very positive"; +// } else if (indexOfAnswer < 10) { +// return "positive"; +// } else if (indexOfAnswer < 15) { +// return "negative"; +// } else { +// return "very negative"; +// } + +// **** TERNARY **** function checkAnswer(answer) { - //Write your code in here + let indexOfAnswer = answers.indexOf(answer); + return indexOfAnswer <= 5 + ? "very positive" + : indexOfAnswer <= 10 + ? "positive" + : indexOfAnswer <= 15 + ? "negative" + : "very negative"; } /* diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index a10cc9ac2..566b465d0 100644 --- a/mandatory/1-syntax-errors.js +++ b/mandatory/1-syntax-errors.js @@ -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) { return a + b + c; } -function introduceMe(name, age) - return "Hello, my name is " + name "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; + total = a + b; - return "The total is total"; + return `The total is ${total}`; } /* diff --git a/mandatory/2-logic-error.js b/mandatory/2-logic-error.js index b90d41dd1..37c4ebc15 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,15 @@ // The syntax for this function is valid but it has an error, find it and fix it. function trimWord(word) { - return wordtrim(); + return word.trim(); } -function getWordLength(word) { - return "word".length(); +function getStringLength(word) { + return word.length; } function multiply(a, b, c) { - a * b * c; - return; + return a * b * c; } /* diff --git a/mandatory/3-function-output.js b/mandatory/3-function-output.js index 5a953ba60..e76c30eb7 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -1,16 +1,17 @@ // Add comments to explain what this function does. You're meant to use Google! function getRandomNumber() { - return Math.random() * 10; + // This function generates a random number + return Math.random() * 10; // Returns a number between 0 and 1 (not including 1) You then multiply it by 10 to get a number. } // Add comments to explain what this function does. You're meant to use Google! function combine2Words(word1, word2) { - return word1.concat(word2); + // This function concatenates 2 strings together. + return word1.concat(word2); // This returns a value of the 2 arguments concatenated. } function concatenate(firstWord, secondWord, thirdWord) { - // Write the body of this function to concatenate three words together. - // Look at the test case below to understand what this function is expected to return. + return firstWord.concat(" ", secondWord, " ", thirdWord); } /* diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..7b86a9bab 100644 --- a/mandatory/4-tax.js +++ b/mandatory/4-tax.js @@ -5,7 +5,9 @@ Sales tax is 20% of the price of the product. */ -function calculateSalesTax() {} +function calculateSalesTax(price) { + return (price += price.toFixed(2) * 0.2); +} /* CURRENCY FORMATTING @@ -17,7 +19,10 @@ function calculateSalesTax() {} Remember that the prices must include the sales tax (hint: you already wrote a function for this!) */ -function addTaxAndFormatCurrency() {} +function addTaxAndFormatCurrency(convert) { + const totalAmount = calculateSalesTax(convert); + return `£${totalAmount.toFixed(2)}`; +} /* =================================================== diff --git a/package.json b/package.json index 58555936d..778df9683 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,9 @@ "url": "https://github.com/CodeYourFuture/JavaScript-Core-1-Coursework-Week1/issues" }, "jest": { - "setupFilesAfterEnv": ["jest-extended"] + "setupFilesAfterEnv": [ + "jest-extended" + ] }, "homepage": "https://github.com/CodeYourFuture/JavaScript-Core-1-Coursework-Week1#readme", "devDependencies": {