From eb5af7d52b4af340f8ba7e242dde46db4f06c108 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Thu, 14 Jul 2022 00:30:48 +0200 Subject: [PATCH 1/9] complete exercises A and B --- 1-exercises/A-undefined/exercise.js | 17 +++++++---------- 1-exercises/B-while-loop/exercise.js | 12 +++++++++--- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/1-exercises/A-undefined/exercise.js b/1-exercises/A-undefined/exercise.js index 0acfc78d..0a934d88 100644 --- a/1-exercises/A-undefined/exercise.js +++ b/1-exercises/A-undefined/exercise.js @@ -11,26 +11,23 @@ // Example 1 let a; -console.log(a); - +console.log(a); // A VARIABLE HAS BEEN DEFINED BUT NOT ASSIGNED A VALUE, THEREFORE IT WILL RETURN AN UNDEFINED VALUE WHEN ACCESSING THE VARIABLE. // Example 2 function sayHello() { - let message = "Hello"; + let message = "Hello"; // A FUNCTION WITH THAT DOES NOT HAVE A RETURN WILL COME BACK AS UNDEFINED. } -let hello = sayHello(); -console.log(hello); - +let hello = sayHello(); // sayHello IN THIS CASE IS NOT A COMPLETED FUNCTION SO WILL DO NOTHING WHEN CALLED UPON. +console.log(hello); // THE OUTPUT OF WHICH, GIVES AN UNDEFINED MESSAGE. // Example 3 function sayHelloToUser(user) { - console.log(`Hello ${user}`); + console.log(`Hello ${user}`); // THE PARAMETER REQUIRES AN ARGUMENT WHEN THE FUNCTION IS CALLED. ARGUMENT IN THIS CASE IS BLANK SO THE OUTPUT IS UNDEFINED. } sayHelloToUser(); - // Example 4 -let arr = [1,2,3]; -console.log(arr[3]); +let arr = [1, 2, 3]; // THIS ARRAY CONSISTS OF ONLY 3 NUMBERS WITH AN INDEX THAT STARTS AT ZERO, SO THE HIGHEST NUMBER IS 2 +console.log(arr[3]); // AND THE USER IS TRYING TO ACCESS A FOURTH NUMBER WHICH WOULD HAVE HAD AN INDEX NUMBER OF 3 WERE IT diff --git a/1-exercises/B-while-loop/exercise.js b/1-exercises/B-while-loop/exercise.js index b459888f..b7fc79e2 100644 --- a/1-exercises/B-while-loop/exercise.js +++ b/1-exercises/B-while-loop/exercise.js @@ -5,10 +5,16 @@ The list of numbers should start with 0. n is being passed in as a parameter. */ +i = 0; +const numbers = []; function evenNumbers(n) { - // TODO + while (numbers.length < n) { + numbers.push(i); + i += 2; + } + console.log(numbers.toString()); } evenNumbers(3); // should output 0,2,4 -evenNumbers(0); // should output nothing -evenNumbers(10); // should output 0,2,4,6,8,10,12,14,16,18 +// evenNumbers(0); // should output nothing +// evenNumbers(10); // should output 0,2,4,6,8,10,12,14,16,18 From 11a3df40a1e608aabe9a74ad6d6fd70bbff088e1 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Fri, 15 Jul 2022 23:07:27 +0200 Subject: [PATCH 2/9] complete exercises B - C --- .vscode/launch.json | 7 ++++ 1-exercises/B-while-loop/exercise.js | 4 +-- .../C-while-loop-with-array/exercise.js | 32 ++++++++++++------- 1-exercises/D-do-while/exercise.js | 26 ++++++++++++--- 4 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..5c7247b4 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,7 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [] +} \ No newline at end of file diff --git a/1-exercises/B-while-loop/exercise.js b/1-exercises/B-while-loop/exercise.js index b7fc79e2..91d421e1 100644 --- a/1-exercises/B-while-loop/exercise.js +++ b/1-exercises/B-while-loop/exercise.js @@ -15,6 +15,6 @@ function evenNumbers(n) { console.log(numbers.toString()); } -evenNumbers(3); // should output 0,2,4 +// evenNumbers(3); // should output 0,2,4 // evenNumbers(0); // should output nothing -// evenNumbers(10); // should output 0,2,4,6,8,10,12,14,16,18 +evenNumbers(10); // should output 0,2,4,6,8,10,12,14,16,18 diff --git a/1-exercises/C-while-loop-with-array/exercise.js b/1-exercises/C-while-loop-with-array/exercise.js index d584cd75..58d2583e 100644 --- a/1-exercises/C-while-loop-with-array/exercise.js +++ b/1-exercises/C-while-loop-with-array/exercise.js @@ -5,19 +5,27 @@ */ const BIRTHDAYS = [ - "January 7th", - "February 12th", - "April 3rd", - "April 5th", - "May 3rd", - "July 11th", - "July 17th", - "September 28th", - "November 15th" + "January 7th", + "February 12th", + "April 3rd", + "April 5th", + "May 3rd", + "July 11th", + "July 17th", + "September 28th", + "November 15th", ]; - +let i = 0; function findFirstJulyBDay(birthdays) { - // TODO + // TODO + while (i < birthdays.length) { + if (birthdays[i].includes("July")) { + return birthdays[i]; + } + i++; + } } -console.log(findFirstJulyBDay(BIRTHDAYS)); // should output "July 11th" +console.log(findFirstJulyBDay(BIRTHDAYS)); + +// console.log(findFirstJulyBDay(BIRTHDAYS)); // should output "July 11th" diff --git a/1-exercises/D-do-while/exercise.js b/1-exercises/D-do-while/exercise.js index f10d0764..c4ac1096 100644 --- a/1-exercises/D-do-while/exercise.js +++ b/1-exercises/D-do-while/exercise.js @@ -6,10 +6,26 @@ Using a do-while loop, write a function which returns the sum of the first n even numbers (starting from 0) */ -function evenNumbersSum(n) { - // TODO +// function evenNumbersSum(n) { +// TODO +// i = 0; +// const numbers = []; +// let multiply = function (number) { +// return (number *= number); +// }; +// do { +// numbers.push(n); + +// let total = numbers.map(multiply); +// i += 2; +// return total.toString(); +// } while (numbers.length < i); +// } + +function sumOfArray(n) { + return n; } -console.log(evenNumbersSum(3)); // should output 6 -console.log(evenNumbersSum(0)); // should output 0 -console.log(evenNumbersSum(10)); // should output 90 \ No newline at end of file +// console.log(evenNumbersSum(3)); // should output 6 +// console.log(evenNumbersSum(0)); // should output 0 +// console.log(evenNumbersSum(10)); // should output 90 From 5c901ef1f81092186f1fb89c91d62ed14e860041 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Wed, 10 Aug 2022 00:13:13 +0200 Subject: [PATCH 3/9] Update exercise.js --- 1-exercises/D-do-while/exercise.js | 31 +++++++++++------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/1-exercises/D-do-while/exercise.js b/1-exercises/D-do-while/exercise.js index c4ac1096..8293b19c 100644 --- a/1-exercises/D-do-while/exercise.js +++ b/1-exercises/D-do-while/exercise.js @@ -6,26 +6,17 @@ Using a do-while loop, write a function which returns the sum of the first n even numbers (starting from 0) */ -// function evenNumbersSum(n) { -// TODO -// i = 0; -// const numbers = []; -// let multiply = function (number) { -// return (number *= number); -// }; -// do { -// numbers.push(n); +function evenNumbersSum(n) { + i = 0; + sum = 0; + do { + sum = sum + i * 2; + i++; + } while (i < n); -// let total = numbers.map(multiply); -// i += 2; -// return total.toString(); -// } while (numbers.length < i); -// } - -function sumOfArray(n) { - return n; + return sum; } -// console.log(evenNumbersSum(3)); // should output 6 -// console.log(evenNumbersSum(0)); // should output 0 -// console.log(evenNumbersSum(10)); // should output 90 +console.log(evenNumbersSum(3)); // should output 6 +console.log(evenNumbersSum(0)); // should output 0 +console.log(evenNumbersSum(10)); // should output 90 From a413703e5e26d1848e98044354e0e82728f30e76 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Thu, 11 Aug 2022 01:30:19 +0200 Subject: [PATCH 4/9] update exercises --- 1-exercises/E-for-loop/exercise1.js | 9 +++------ 1-exercises/E-for-loop/exercise2.js | 24 ++++++++++-------------- 1-exercises/F-for-of-loop/exercise.js | 17 +++++++++++------ 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/1-exercises/E-for-loop/exercise1.js b/1-exercises/E-for-loop/exercise1.js index db5fac64..d027a5f7 100644 --- a/1-exercises/E-for-loop/exercise1.js +++ b/1-exercises/E-for-loop/exercise1.js @@ -4,11 +4,8 @@ Change the while loop below into a for loop. */ - // Change the below code to use a for loop instead of a while loop. -let i = 0; -while(i < 26) { - console.log(String.fromCharCode(97 + i)); - i++; -} + +for (let i = 0; i < 26; i++) console.log(String.fromCharCode(97 + i)); + // The output shouldn't change. diff --git a/1-exercises/E-for-loop/exercise2.js b/1-exercises/E-for-loop/exercise2.js index 081002b2..f5231b10 100644 --- a/1-exercises/E-for-loop/exercise2.js +++ b/1-exercises/E-for-loop/exercise2.js @@ -11,23 +11,19 @@ */ const WRITERS = [ - "Virginia Woolf", - "Zadie Smith", - "Jane Austen", - "Bell Hooks", - "Yukiko Motoya" -] - -const AGES = [ - 59, - 40, - 41, - 63, - 49 + "Virginia Woolf", + "Zadie Smith", + "Jane Austen", + "Bell Hooks", + "Yukiko Motoya", ]; -// TODO - Write for loop code here +const AGES = [59, 40, 41, 63, 49]; +// TODO - Write for loop code here +for (let i = 0; i < WRITERS.length; i++) { + console.log(WRITERS[i] + " is " + AGES[i] + " years old"); +} /* The output should look something like this: diff --git a/1-exercises/F-for-of-loop/exercise.js b/1-exercises/F-for-of-loop/exercise.js index 65585c6a..9a87d1ed 100644 --- a/1-exercises/F-for-of-loop/exercise.js +++ b/1-exercises/F-for-of-loop/exercise.js @@ -4,13 +4,18 @@ // TODO Use a for-of loop to output each of the tube stations below. let tubeStations = [ - "Aldgate", - "Baker Street", - "Picadilly Circus", - "Oxford Street", - "Tottenham Court Road" + "Aldgate", + "Baker Street", + "Picadilly Circus", + "Oxford Street", + "Tottenham Court Road", ]; - +for (let i of tubeStations) { + console.log(i); +} // TODO Use a for-of loop to capitalise and output each letter in the string seperately. let str = "codeyourfuture"; +for (let i of "codeyourfuture") { + console.log(i.toUpperCase()); +} From 2395e35391c4fb14506b6e772f94985f7aca82d7 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Thu, 11 Aug 2022 18:14:07 +0200 Subject: [PATCH 5/9] Update 1-weather-report.js --- 2-mandatory/1-weather-report.js | 72 ++++++++++++++++----------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/2-mandatory/1-weather-report.js b/2-mandatory/1-weather-report.js index dcc2bdb0..ca8f044d 100644 --- a/2-mandatory/1-weather-report.js +++ b/2-mandatory/1-weather-report.js @@ -2,7 +2,7 @@ Imagine we're making a weather app! We have a list of cities that the user wants to track. - We also already have a temperatureService function which will take a city as a parameter and return a temparature. + We also already have a temperatureService function which will take a city as a parameter and return a temperature. Implement the function below: - take the array of cities as a parameter @@ -12,52 +12,52 @@ */ function getTemperatureReport(cities) { - // TODO + let result = cities.map( + (element) => + "The temperature in " + + element + + " is " + + temperatureService(element) + + " degrees" + ); + return result; } - /* ======= TESTS - DO NOT MODIFY ===== */ function temperatureService(city) { - let temparatureMap = new Map(); - - temparatureMap.set('London', 10); - temparatureMap.set('Paris', 12); - temparatureMap.set('Barcelona', 17); - temparatureMap.set('Dubai', 27); - temparatureMap.set('Mumbai', 29); - temparatureMap.set('São Paulo', 23); - temparatureMap.set('Lagos', 33); - - return temparatureMap.get(city); + let temperatureMap = new Map(); + + temperatureMap.set("London", 10); + temperatureMap.set("Paris", 12); + temperatureMap.set("Barcelona", 17); + temperatureMap.set("Dubai", 27); + temperatureMap.set("Mumbai", 29); + temperatureMap.set("São Paulo", 23); + temperatureMap.set("Lagos", 33); + + return temperatureMap.get(city); } test("should return a temperature report for the user's cities", () => { - let usersCities = [ - "London", - "Paris", - "São Paulo" - ] - - expect(getTemperatureReport(usersCities)).toEqual([ - "The temperature in London is 10 degrees", - "The temperature in Paris is 12 degrees", - "The temperature in São Paulo is 23 degrees" - ]); + let usersCities = ["London", "Paris", "São Paulo"]; + + expect(getTemperatureReport(usersCities)).toEqual([ + "The temperature in London is 10 degrees", + "The temperature in Paris is 12 degrees", + "The temperature in São Paulo is 23 degrees", + ]); }); test("should return a temperature report for the user's cities (alternate input)", () => { - let usersCities = [ - "Barcelona", - "Dubai" - ] - - expect(getTemperatureReport(usersCities)).toEqual([ - "The temperature in Barcelona is 17 degrees", - "The temperature in Dubai is 27 degrees" - ]); + let usersCities = ["Barcelona", "Dubai"]; + + expect(getTemperatureReport(usersCities)).toEqual([ + "The temperature in Barcelona is 17 degrees", + "The temperature in Dubai is 27 degrees", + ]); }); test("should return an empty array if the user hasn't selected any cities", () => { - expect(getTemperatureReport([])).toEqual([]); -}); \ No newline at end of file + expect(getTemperatureReport([])).toEqual([]); +}); From 310a4f86d67450b06ab2f85097d114dfa78d46e2 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Thu, 11 Aug 2022 18:20:23 +0200 Subject: [PATCH 6/9] Update 2-retrying-random-numbers.js --- 2-mandatory/2-retrying-random-numbers.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/2-mandatory/2-retrying-random-numbers.js b/2-mandatory/2-retrying-random-numbers.js index 10aab37d..facbe3ae 100644 --- a/2-mandatory/2-retrying-random-numbers.js +++ b/2-mandatory/2-retrying-random-numbers.js @@ -5,20 +5,25 @@ // This function shouldn't be changed function generateRandomNumber() { - console.log("Generating number..."); - return Math.round(Math.random() * 100); + console.log("Generating number..."); + return Math.round(Math.random() * 100); } function getRandomNumberGreaterThan50() { - // TODO - implement using a do-while loop + // TODO - implement using a do-while loop + let i = 0; + do { + i++; + return generateRandomNumber(); + } while (i < 50); } /* ======= TESTS - DO NOT MODIFY ===== */ test("Returned value should always be greater than 50", () => { - expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); - expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); - expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); - expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); - expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); + expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); + expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); + expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); + expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); + expect(getRandomNumberGreaterThan50()).toBeGreaterThan(50); }); From a8a26cf614fc56141bf9aaf8d8581d3c35cfd658 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Thu, 11 Aug 2022 23:38:52 +0200 Subject: [PATCH 7/9] Update 3-financial-times.js --- 2-mandatory/3-financial-times.js | 90 +++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/2-mandatory/3-financial-times.js b/2-mandatory/3-financial-times.js index 2ce6fb73..f9273f22 100644 --- a/2-mandatory/3-financial-times.js +++ b/2-mandatory/3-financial-times.js @@ -5,77 +5,105 @@ Implement the function below, which will return a new array containing only article titles which will fit. */ function potentialHeadlines(allArticleTitles) { - // TODO + let result = allArticleTitles.filter((element) => element.length <= 65); + return result; + // TODO } /* The editor of the FT likes short headlines with only a few words! Implement the function below, which returns the title with the fewest words. - (you can assume words will always be seperated by a space) + (you can assume words will always be separated by a space) */ function titleWithFewestWords(allArticleTitles) { - // TODO + // TODO + const arraySorted = allArticleTitles.sort((a, b) => a.length - b.length); + return arraySorted[0]; } /* - The editor of the FT has realised that headlines which have numbers in them get more clicks! + The editor of the FT has realized that headlines which have numbers in them get more clicks! Implement the function below to return a new array containing all the headlines which contain a number. (Hint: remember that you can also loop through the characters of a string if you need to) */ function headlinesWithNumbers(allArticleTitles) { - // TODO + allArticleTitles = allArticleTitles.filter((element) => { + for (let i in element) { + if (hasNumber(element[i])) return element; + } + }); + return allArticleTitles; +} +function hasNumber(myString) { + return /\d/.test(myString); } /* The Financial Times wants to understand what the average number of characters in an article title is. Implement the function below to return this number - rounded to the nearest integer. */ +let sum = 0; function averageNumberOfCharacters(allArticleTitles) { - // TODO + let getAverage = allArticleTitles.length; + allArticleTitles = allArticleTitles.forEach((item) => { + let array = []; + for (let i = 0; i < allArticleTitles.length; i++) { + array.push(item.length); + sum += array[i]; + return allArticleTitles; + } + }); + sum = sum / getAverage; + sum = Math.round(sum); + return sum; } - - /* ======= List of Articles - DO NOT MODIFY ===== */ const ARTICLE_TITLES = [ - "Streaming wars drive media groups to spend more than $100bn on new content", - "Amazon Prime Video India country head: streaming is driving a TV revolution", - "Aerospace chiefs prepare for bumpy ride in recovery of long-haul flights", - "British companies look to muscle in on US retail investing boom", - "Libor to take firm step towards oblivion on New Year's Day", - "Audit profession unattractive to new recruits, says PwC boss", - "Chinese social media users blast Elon Musk over near miss in space", - "Companies raise over $12tn in 'blockbuster' year for global capital markets", - "The three questions that dominate investment", - "Brussels urges Chile's incoming president to endorse EU trade deal", + "Streaming wars drive media groups to spend more than $100bn on new content", + "Amazon Prime Video India country head: streaming is driving a TV revolution", + "Aerospace chiefs prepare for bumpy ride in recovery of long-haul flights", + "British companies look to muscle in on US retail investing boom", + "Libor to take firm step towards oblivion on New Year's Day", + "Audit profession unattractive to new recruits, says PwC boss", + "Chinese social media users blast Elon Musk over near miss in space", + "Companies raise over $12tn in 'blockbuster' year for global capital markets", + "The three questions that dominate investment", + "Brussels urges Chile's incoming president to endorse EU trade deal", ]; /* ======= TESTS - DO NOT MODIFY ===== */ test("should only return potential headlines", () => { - expect(new Set(potentialHeadlines(ARTICLE_TITLES))).toEqual(new Set([ - "British companies look to muscle in on US retail investing boom", - "Libor to take firm step towards oblivion on New Year's Day", - "Audit profession unattractive to new recruits, says PwC boss", - "The three questions that dominate investment" - ])); + expect(new Set(potentialHeadlines(ARTICLE_TITLES))).toEqual( + new Set([ + "British companies look to muscle in on US retail investing boom", + "Libor to take firm step towards oblivion on New Year's Day", + "Audit profession unattractive to new recruits, says PwC boss", + "The three questions that dominate investment", + ]) + ); }); test("should return an empty array for empty input", () => { - expect(potentialHeadlines([])).toEqual([]); + expect(potentialHeadlines([])).toEqual([]); }); test("should return the title with the fewest words", () => { - expect(titleWithFewestWords(ARTICLE_TITLES)).toEqual("The three questions that dominate investment"); + expect(titleWithFewestWords(ARTICLE_TITLES)).toEqual( + "The three questions that dominate investment" + ); }); test("should only return headlines containing numbers", () => { - expect(new Set(headlinesWithNumbers(ARTICLE_TITLES))).toEqual(new Set([ - "Streaming wars drive media groups to spend more than $100bn on new content", - "Companies raise over $12tn in 'blockbuster' year for global capital markets" - ])); + expect(new Set(headlinesWithNumbers(ARTICLE_TITLES))).toEqual( + new Set([ + "Streaming wars drive media groups to spend more than $100bn on new content", + "Companies raise over $12tn in 'blockbuster' year for global capital markets", + ]) + ); }); test("should return the average number of characters in a headline", () => { - expect(averageNumberOfCharacters(ARTICLE_TITLES)).toEqual(65); + expect(averageNumberOfCharacters(ARTICLE_TITLES)).toEqual(65); }); From e01fb7506e053c80f905d87ba480f730ee339531 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Fri, 12 Aug 2022 21:58:34 +0200 Subject: [PATCH 8/9] Update 4-stocks.js --- 2-mandatory/4-stocks.js | 56 +++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/2-mandatory/4-stocks.js b/2-mandatory/4-stocks.js index 72d62f94..1c230acc 100644 --- a/2-mandatory/4-stocks.js +++ b/2-mandatory/4-stocks.js @@ -11,11 +11,11 @@ const STOCKS = ["aapl", "msft", "amzn", "googl", "tsla"]; const CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS = [ - [179.19, 180.33, 176.28, 175.64, 172.99], // AAPL - [340.69, 342.45, 334.69, 333.20, 327.29], // MSFT - [3384.44, 3393.39, 3421.37, 3420.74, 3408.34], // AMZN - [2951.88, 2958.13, 2938.33, 2928.30, 2869.45], // GOOGL - [1101.30, 1093.94, 1067.00, 1008.87, 938.53] // TSLA + [179.19, 180.33, 176.28, 175.64, 172.99], // AAPL + [340.69, 342.45, 334.69, 333.2, 327.29], // MSFT + [3384.44, 3393.39, 3421.37, 3420.74, 3408.34], // AMZN + [2951.88, 2958.13, 2938.33, 2928.3, 2869.45], // GOOGL + [1101.3, 1093.94, 1067.0, 1008.87, 938.53], // TSLA ]; /* @@ -34,7 +34,16 @@ const CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS = [ Functions can help with this! */ function getAveragePrices(closingPricesForAllStocks) { - // TODO + avg = closingPricesForAllStocks.map( + (array) => array.reduce((a, b) => a + b) / array.length + ); + let roundedToDecimal = []; + let result = []; + + avg.forEach((item) => roundedToDecimal.push(item.toFixed(2))); + roundedToDecimal.forEach((item) => result.push(Number(item))); + + return result; } /* @@ -48,7 +57,7 @@ function getAveragePrices(closingPricesForAllStocks) { The price change value should be rounded to 2 decimal places, and should be a number (not a string) */ function getPriceChanges(closingPricesForAllStocks) { - // TODO + // TODO } /* @@ -64,31 +73,30 @@ function getPriceChanges(closingPricesForAllStocks) { The price should be shown with exactly 2 decimal places. */ function highestPriceDescriptions(closingPricesForAllStocks, stocks) { - // TODO + // TODO } - /* ======= TESTS - DO NOT MODIFY ===== */ test("should return the average price for each stock", () => { - expect(getAveragePrices(CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS)).toEqual( - [176.89, 335.66, 3405.66, 2929.22, 1041.93] - ); + expect(getAveragePrices(CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS)).toEqual([ + 176.89, 335.66, 3405.66, 2929.22, 1041.93, + ]); }); test("should return the price change for each stock", () => { - expect(getPriceChanges(CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS)).toEqual( - [-6.2, -13.4, 23.9, -82.43, -162.77] - ); + expect(getPriceChanges(CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS)).toEqual([ + -6.2, -13.4, 23.9, -82.43, -162.77, + ]); }); test("should return a description of the highest price for each stock", () => { - expect(highestPriceDescriptions(CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS, STOCKS)).toEqual( - [ - "The highest price of AAPL in the last 5 days was 180.33", - "The highest price of MSFT in the last 5 days was 342.45", - "The highest price of AMZN in the last 5 days was 3421.37", - "The highest price of GOOGL in the last 5 days was 2958.13", - "The highest price of TSLA in the last 5 days was 1101.30" - ] - ); + expect( + highestPriceDescriptions(CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS, STOCKS) + ).toEqual([ + "The highest price of AAPL in the last 5 days was 180.33", + "The highest price of MSFT in the last 5 days was 342.45", + "The highest price of AMZN in the last 5 days was 3421.37", + "The highest price of GOOGL in the last 5 days was 2958.13", + "The highest price of TSLA in the last 5 days was 1101.30", + ]); }); From f4fe7a24e233aebe191228c13cc120c66794da90 Mon Sep 17 00:00:00 2001 From: Riyaaz Singh <94745207+Riyaazct@users.noreply.github.com> Date: Sat, 13 Aug 2022 21:49:02 +0200 Subject: [PATCH 9/9] Update 4-stocks.js --- 2-mandatory/4-stocks.js | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/2-mandatory/4-stocks.js b/2-mandatory/4-stocks.js index 1c230acc..1dd1142f 100644 --- a/2-mandatory/4-stocks.js +++ b/2-mandatory/4-stocks.js @@ -57,7 +57,16 @@ function getAveragePrices(closingPricesForAllStocks) { The price change value should be rounded to 2 decimal places, and should be a number (not a string) */ function getPriceChanges(closingPricesForAllStocks) { - // TODO + let pricesChanged = closingPricesForAllStocks.map((e) => { + return e.at(-1) - e[0]; // answer found at this link helped with this part(.at) https://stackoverflow.com/questions/71851312/how-can-i-get-the-last-items-from-a-nested-array + }); + let numbersRounded = []; // empty array to push numbers rounded to. + let result = []; // empty array to convert string created by .toFIxed to a number. + pricesChanged.forEach((element) => { + numbersRounded.push(element.toFixed(2) * 1); + }); // rounded elements to 2 decimal places and pushed to empty array. + numbersRounded.forEach((elem) => result.push(Number(elem))); // convert strings to numbers and push to empty array created. + return result; } /* @@ -72,8 +81,29 @@ function getPriceChanges(closingPricesForAllStocks) { The stock ticker should be capitalised. The price should be shown with exactly 2 decimal places. */ + function highestPriceDescriptions(closingPricesForAllStocks, stocks) { - // TODO + let finalClosingPrice = closingPricesForAllStocks.map(function (subArray) { + return subArray.reduce(function ( + previousLargestNumber, + currentLargestNumber + ) { + return currentLargestNumber > previousLargestNumber + ? currentLargestNumber + : previousLargestNumber; + }, + 0); + }); // SOURCES: FCC - https://tinyurl.com/yytu8cb5 & Stack Overflow - https://tinyurl.com/2p8erd2m + + let result = finalClosingPrice.map(function (e1, index) { + return ( + "The highest price of " + + STOCKS[index].toUpperCase() + + " in the last 5 days was " + + Number(e1).toFixed(2) // converted element to a number in order to use the .toFixed method. + ); + }); + return result; } /* ======= TESTS - DO NOT MODIFY ===== */