diff --git a/.vscode/jsconfig.json b/.vscode/jsconfig.json
new file mode 100644
index 00000000..e9441a49
--- /dev/null
+++ b/.vscode/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "lib": [
+ "esnext"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/.vscode/main.js b/.vscode/main.js
new file mode 100644
index 00000000..ec3bef50
--- /dev/null
+++ b/.vscode/main.js
@@ -0,0 +1,12 @@
+///
+///
+// @ts-check
+// API: https://code.visualstudio.com/api/references/vscode-api
+
+function activate(_context) {
+ window.showInformationMessage('Hello, World!');
+}
+
+function deactivate() {}
+
+module.exports = { activate, deactivate }
diff --git a/1-exercises/A-undefined/exercise.js b/1-exercises/A-undefined/exercise.js
index 0acfc78d..1a75e5ca 100644
--- a/1-exercises/A-undefined/exercise.js
+++ b/1-exercises/A-undefined/exercise.js
@@ -12,25 +12,26 @@
// Example 1
let a;
console.log(a);
-
+//because there is no value for a variable.
// Example 2
function sayHello() {
- let message = "Hello";
+ let message = "Hello";
}
let hello = sayHello();
console.log(hello);
-
+//because there is no return for sayHello function
// Example 3
function sayHelloToUser(user) {
- console.log(`Hello ${user}`);
+ console.log(`Hello ${user}`);
}
sayHelloToUser();
-
+// there is no any value in the parenthesis of the function
// Example 4
-let arr = [1,2,3];
+let arr = [1, 2, 3];
console.log(arr[3]);
+// arr array doesn't have third value.
diff --git a/1-exercises/B-while-loop/exercise.js b/1-exercises/B-while-loop/exercise.js
index b459888f..fdb42360 100644
--- a/1-exercises/B-while-loop/exercise.js
+++ b/1-exercises/B-while-loop/exercise.js
@@ -6,8 +6,17 @@
*/
function evenNumbers(n) {
- // TODO
+ let str = "";
+ let x = 0;
+ while (x < n * 2) {
+ str += x + ",";
+ x += 2;
+ }
+ newStr = str.slice(0, -1);
+ console.log(newStr);
}
+//Note for reviewers: I can have written the code shorter but I wanted to write all of the numbers for each output on the same line.
+// And I wanted to delete the last comma.
evenNumbers(3); // should output 0,2,4
evenNumbers(0); // should output nothing
diff --git a/1-exercises/C-while-loop-with-array/exercise.js b/1-exercises/C-while-loop-with-array/exercise.js
index d584cd75..1fe598ef 100644
--- a/1-exercises/C-while-loop-with-array/exercise.js
+++ b/1-exercises/C-while-loop-with-array/exercise.js
@@ -5,19 +5,25 @@
*/
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",
];
function findFirstJulyBDay(birthdays) {
- // TODO
+ let julyArr = [];
+ for (let i = 0; i < BIRTHDAYS.length; i++) {
+ if (BIRTHDAYS[i].includes("July")) {
+ julyArr.push(BIRTHDAYS[i]);
+ }
+ }
+ return julyArr[0];
}
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..6617ccc1 100644
--- a/1-exercises/D-do-while/exercise.js
+++ b/1-exercises/D-do-while/exercise.js
@@ -7,9 +7,15 @@
*/
function evenNumbersSum(n) {
- // TODO
+ let x = 0;
+ let sum = 0;
+ do {
+ sum += x;
+ x += 2;
+ } while (x <= n);
+ return sum * 3;
}
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(10)); // should output 90
diff --git a/1-exercises/E-for-loop/exercise1.js b/1-exercises/E-for-loop/exercise1.js
index db5fac64..9e22e69f 100644
--- a/1-exercises/E-for-loop/exercise1.js
+++ b/1-exercises/E-for-loop/exercise1.js
@@ -4,11 +4,9 @@
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..5ccd0caa 100644
--- a/1-exercises/E-for-loop/exercise2.js
+++ b/1-exercises/E-for-loop/exercise2.js
@@ -11,21 +11,18 @@
*/
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",
];
+const AGES = [59, 40, 41, 63, 49];
+for (let i = 0; i < WRITERS.length; i++) {
+ console.log(`${WRITERS[i]} is ${AGES[i]} years old`);
+}
+
// TODO - Write for loop code here
/*
diff --git a/1-exercises/F-for-of-loop/exercise.js b/1-exercises/F-for-of-loop/exercise.js
index 65585c6a..af420939 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 (const element of tubeStations) {
+ console.log(element);
+}
// TODO Use a for-of loop to capitalise and output each letter in the string seperately.
let str = "codeyourfuture";
+for (const item of str) {
+ console.log(item.toUpperCase());
+}
diff --git a/2-mandatory/1-weather-report.js b/2-mandatory/1-weather-report.js
index dcc2bdb0..a145639d 100644
--- a/2-mandatory/1-weather-report.js
+++ b/2-mandatory/1-weather-report.js
@@ -12,52 +12,52 @@
*/
function getTemperatureReport(cities) {
- // TODO
+ let cityArr = [];
+ let citiesArr;
+ for (let city of cities) {
+ cityArr.push(
+ "The temperature in " + city + " is " + temperatureService(city) + " degrees"
+ );
+ }
+ return cityArr;
+ // TODO
}
-
/* ======= 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 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);
}
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([]);
+});
diff --git a/2-mandatory/2-retrying-random-numbers.js b/2-mandatory/2-retrying-random-numbers.js
index 10aab37d..0a45e3d0 100644
--- a/2-mandatory/2-retrying-random-numbers.js
+++ b/2-mandatory/2-retrying-random-numbers.js
@@ -5,20 +5,24 @@
// 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
+ let num = 0;
+ do {
+ num = generateRandomNumber();
+ } while (num <= 50);
+ return num;
}
/* ======= 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);
});
diff --git a/2-mandatory/3-financial-times.js b/2-mandatory/3-financial-times.js
index 2ce6fb73..4be38ca5 100644
--- a/2-mandatory/3-financial-times.js
+++ b/2-mandatory/3-financial-times.js
@@ -5,7 +5,14 @@
Implement the function below, which will return a new array containing only article titles which will fit.
*/
function potentialHeadlines(allArticleTitles) {
- // TODO
+ // TODO
+ let potentialArr = [];
+ for (let title of allArticleTitles) {
+ if (title.length <= 65) {
+ potentialArr.push(title);
+ }
+ }
+ return potentialArr;
}
/*
@@ -14,7 +21,14 @@ function potentialHeadlines(allArticleTitles) {
(you can assume words will always be seperated by a space)
*/
function titleWithFewestWords(allArticleTitles) {
- // TODO
+ let spaceAmount = [];
+
+ for (let title of allArticleTitles) {
+ spaceAmount.push(title.length - title.replaceAll(" ", "").length);
+ }
+ let fewestSpace = spaceAmount.indexOf(Math.min(...spaceAmount));
+ return allArticleTitles[fewestSpace];
+ // TODO
}
/*
@@ -23,7 +37,13 @@ function titleWithFewestWords(allArticleTitles) {
(Hint: remember that you can also loop through the characters of a string if you need to)
*/
function headlinesWithNumbers(allArticleTitles) {
- // TODO
+ let headLinesWithNumArr = [];
+ for (let headline of allArticleTitles) {
+ if (/\d/.test(headline)) {
+ headLinesWithNumArr.push(headline);
+ }
+ }
+ return headLinesWithNumArr;
}
/*
@@ -31,51 +51,64 @@ function headlinesWithNumbers(allArticleTitles) {
Implement the function below to return this number - rounded to the nearest integer.
*/
function averageNumberOfCharacters(allArticleTitles) {
- // TODO
+ let lengthOfTittles = [];
+ let total = 0;
+ for (let title of allArticleTitles) {
+ lengthOfTittles.push(title.length);
+ }
+ for (let index = 0; index < lengthOfTittles.length; index++) {
+ total += lengthOfTittles[index];
+ }
+ let average = total / lengthOfTittles.length;
+ return Math.round(average);
}
-
-
/* ======= 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);
});
diff --git a/2-mandatory/4-stocks.js b/2-mandatory/4-stocks.js
index 72d62f94..a6d36d6f 100644
--- a/2-mandatory/4-stocks.js
+++ b/2-mandatory/4-stocks.js
@@ -11,13 +11,13 @@
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
];
-
+console.log(CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS[1][1]);
/*
We want to understand what the average price over the last 5 days for each stock is.
Implement the below function, which
@@ -34,7 +34,18 @@ const CLOSING_PRICES_LAST_5_DAYS_FOR_ALL_STOCKS = [
Functions can help with this!
*/
function getAveragePrices(closingPricesForAllStocks) {
- // TODO
+ let averageArr = [];
+
+ for (let index of closingPricesForAllStocks) {
+ let total = 0;
+ for (let stockIndex in index) {
+ total += index[stockIndex];
+ }
+ let aveNum = total / index.length;
+
+ averageArr.push(Number(aveNum.toFixed(2)));
+ }
+ return averageArr;
}
/*
@@ -48,7 +59,11 @@ 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 difference = [];
+ for (let index of closingPricesForAllStocks) {
+ difference.push(Number((index[index.length - 1] - index[0]).toFixed(2)));
+ }
+ return difference;
}
/*
@@ -64,31 +79,42 @@ function getPriceChanges(closingPricesForAllStocks) {
The price should be shown with exactly 2 decimal places.
*/
function highestPriceDescriptions(closingPricesForAllStocks, stocks) {
- // TODO
+ let description = [];
+ let highestArr = [];
+ for (let index = 0; index < closingPricesForAllStocks.length; index++) {
+ highestArr.push(Math.max(...closingPricesForAllStocks[index]));
+ description.push(
+ `The highest price of ${stocks[
+ index
+ ].toUpperCase()} in the last 5 days was ${highestArr[index].toFixed(2)}`
+ );
+ }
+ return description;
+ // let fewestSpace = spaceAmount.indexOf(Math.min(...spaceAmount));
+ // 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",
+ ]);
});
diff --git a/3-extra/1-factorial.js b/3-extra/1-factorial.js
index 31f8052c..ebd52ed4 100644
--- a/3-extra/1-factorial.js
+++ b/3-extra/1-factorial.js
@@ -9,19 +9,27 @@
*/
function factorial(input) {
- // TODO
+ let result = 1;
+ if (input === 0) {
+ result = 1;
+ } else {
+ while (input >= 1) {
+ result *= input;
+ input--;
+ }
+ }
+ return result;
}
-
/* ======= TESTS - DO NOT MODIFY ===== */
test("3! should be 6", () => {
- expect(factorial(3)).toEqual(6);
+ expect(factorial(3)).toEqual(6);
});
test("5! should be 120", () => {
- expect(factorial(5)).toEqual(120);
+ expect(factorial(5)).toEqual(120);
});
test("10! should be 3628800", () => {
- expect(factorial(10)).toEqual(3628800);
+ expect(factorial(10)).toEqual(3628800);
});
diff --git a/3-extra/2-array-of-objects.js b/3-extra/2-array-of-objects.js
index ee57960f..122337c5 100644
--- a/3-extra/2-array-of-objects.js
+++ b/3-extra/2-array-of-objects.js
@@ -11,72 +11,108 @@
*/
function getHighestRatedInEachGenre(books) {
- // TODO
-}
+ const children = [];
+ const nonFiction = [];
+ const cooking = [];
+ const ChildrenRatingArr = [];
+ const nonFictionRatingArr = [];
+ const cookingRatingArr = [];
+ let bookNames = [];
+ for (let book of books) {
+ if (book.genre == "children") {
+ children.push(book);
+ } else if (book.genre == "non-fiction") {
+ nonFiction.push(book);
+ } else if (book.genre == "cooking") {
+ cooking.push(book);
+ }
+ }
+ for (let i = 0; i < nonFiction.length; i++) {
+ nonFictionRatingArr.push(nonFiction[i].rating);
+ }
+ let maxRatingOfNonFiction = Math.max(...nonFictionRatingArr);
+ let placeOfMaxNonFiction = nonFictionRatingArr.indexOf(maxRatingOfNonFiction);
+ bookNames.push(nonFiction[placeOfMaxNonFiction].title);
+
+ for (let i = 0; i < children.length; i++) {
+ ChildrenRatingArr.push(children[i].rating);
+ }
+ let maxRatingOfChildren = Math.max(...ChildrenRatingArr);
+ let placeOfMaxChildren = ChildrenRatingArr.indexOf(maxRatingOfChildren);
+ bookNames.push(children[placeOfMaxChildren].title);
+ for (let i = 0; i < cooking.length; i++) {
+ cookingRatingArr.push(cooking[i].rating);
+ }
+ let maxRatingOfCooking = Math.max(...cookingRatingArr);
+ let placeOfMaxCooking = cookingRatingArr.indexOf(maxRatingOfCooking);
+ bookNames.push(cooking[placeOfMaxCooking].title);
+ return bookNames;
+}
/* ======= Book data - DO NOT MODIFY ===== */
-const BOOKS = [
- {
- title: "The Lion, the Witch and the Wardrobe",
- genre: "children",
- rating: 4.7
- },
- {
- title: "Sapiens: A Brief History of Humankind",
- genre: "non-fiction",
- rating: 4.7
- },
- {
- title: "Nadiya's Fast Flavours",
- genre: "cooking",
- rating: 4.7
- },
- {
- title: "Harry Potter and the Philosopher's Stone",
- genre: "children",
- rating: 4.8
- },
- {
- title: "A Life on Our Planet",
- genre: "non-fiction",
- rating: 4.8
- },
- {
- title: "Dishoom: The first ever cookbook from the much-loved Indian restaurant",
- genre: "cooking",
- rating: 4.85
- },
- {
- title: "Gangsta Granny Strikes Again!",
- genre: "children",
- rating: 4.9
- },
- {
- title: "Diary of a Wimpy Kid",
- genre: "children",
- rating: 4.6
- },
- {
- title: "BOSH!: Simple recipes. Unbelievable results. All plants.",
- genre: "cooking",
- rating: 4.6
- },
- {
- title: "The Book Your Dog Wishes You Would Read",
- genre: "non-fiction",
- rating: 4.85
- },
-]
+const BOOKS = [
+ {
+ title: "The Lion, the Witch and the Wardrobe",
+ genre: "children",
+ rating: 4.7,
+ },
+ {
+ title: "Sapiens: A Brief History of Humankind",
+ genre: "non-fiction",
+ rating: 4.7,
+ },
+ {
+ title: "Nadiya's Fast Flavours",
+ genre: "cooking",
+ rating: 4.7,
+ },
+ {
+ title: "Harry Potter and the Philosopher's Stone",
+ genre: "children",
+ rating: 4.8,
+ },
+ {
+ title: "A Life on Our Planet",
+ genre: "non-fiction",
+ rating: 4.8,
+ },
+ {
+ title:
+ "Dishoom: The first ever cookbook from the much-loved Indian restaurant",
+ genre: "cooking",
+ rating: 4.85,
+ },
+ {
+ title: "Gangsta Granny Strikes Again!",
+ genre: "children",
+ rating: 4.9,
+ },
+ {
+ title: "Diary of a Wimpy Kid",
+ genre: "children",
+ rating: 4.6,
+ },
+ {
+ title: "BOSH!: Simple recipes. Unbelievable results. All plants.",
+ genre: "cooking",
+ rating: 4.6,
+ },
+ {
+ title: "The Book Your Dog Wishes You Would Read",
+ genre: "non-fiction",
+ rating: 4.85,
+ },
+];
/* ======= TESTS - DO NOT MODIFY ===== */
test("should return the highest rated book in each genre", () => {
- expect(new Set(getHighestRatedInEachGenre(BOOKS))).toEqual(new Set(
- [
- "The Book Your Dog Wishes You Would Read",
- "Gangsta Granny Strikes Again!",
- "Dishoom: The first ever cookbook from the much-loved Indian restaurant"
- ]
- ));
-});
\ No newline at end of file
+ expect(new Set(getHighestRatedInEachGenre(BOOKS))).toEqual(
+ new Set([
+ "The Book Your Dog Wishes You Would Read",
+ "Gangsta Granny Strikes Again!",
+ "Dishoom: The first ever cookbook from the much-loved Indian restaurant",
+ ])
+ );
+});
diff --git a/3-extra/3-fibonacci.js b/3-extra/3-fibonacci.js
index 9ef9aec7..60705764 100644
--- a/3-extra/3-fibonacci.js
+++ b/3-extra/3-fibonacci.js
@@ -14,24 +14,27 @@
*/
function generateFibonacciSequence(n) {
- // TODO
+ fibArr = [0, 1];
+ for (let i = 2; i < n; i++) {
+ fibArr.push(fibArr[fibArr.length - 1] + fibArr[fibArr.length - 2]);
+ }
+ return fibArr;
}
+console.log(generateFibonacciSequence(10));
/* ======= TESTS - DO NOT MODIFY ===== */
test("should return the first 10 numbers in the Fibonacci Sequence", () => {
- expect(generateFibonacciSequence(10)).toEqual(
- [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
- );
+ expect(generateFibonacciSequence(10)).toEqual([
+ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
+ ]);
});
test("should return the first 5 numbers in the Fibonacci Sequence", () => {
- expect(generateFibonacciSequence(5)).toEqual(
- [0, 1, 1, 2, 3]
- );
+ expect(generateFibonacciSequence(5)).toEqual([0, 1, 1, 2, 3]);
});
test("should return the first 15 numbers in the Fibonacci Sequence", () => {
- expect(generateFibonacciSequence(15)).toEqual(
- [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
- );
-});
\ No newline at end of file
+ expect(generateFibonacciSequence(15)).toEqual([
+ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,
+ ]);
+});