Skip to content
This repository was archived by the owner on Jan 14, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
'jest/globals': true,
},
extends: [
'airbnb-base',
'plugin:jest/recommended',
],
parserOptions: {
ecmaVersion: 13,
sourceType: 'module',
},
rules: {
quotes: ['error', 'single', { avoidEscape: true }],
'max-len': 0,
'no-console': 'off',
'no-plusplus': 'off',
},
plugins: ['jest'],
};
10 changes: 5 additions & 5 deletions 1-exercises/A-undefined/exercise.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
For each example, can you explain why we are seeing undefined?
*/

// Example 1
// Example 1 - declaration of variable 'a' doesn't assign a value
let a;
console.log(a);


// Example 2
// Example 2 - function is not returning anything
function sayHello() {
let message = "Hello";
}
Expand All @@ -23,14 +23,14 @@ let hello = sayHello();
console.log(hello);


// Example 3
// Example 3 - user argument is not passed to the function
function sayHelloToUser(user) {
console.log(`Hello ${user}`);
}

sayHelloToUser();


// Example 4
let arr = [1,2,3];
// Example 4 - arr doesn't have a value at index 3 (it only has 0,1,2 indexes)
let arr = [1, 2, 3];
console.log(arr[3]);
14 changes: 10 additions & 4 deletions 1-exercises/B-while-loop/exercise.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
/*
while loops can be useful when you want to execute some code as long as some condition is true.
while loops can be useful when you want to execute some code as long as some condition is true.

Using a while loop, complete the function below so it logs (using console.log) the first n even numbers as a comma-seperated string.
The list of numbers should start with 0. n is being passed in as a parameter.
*/

function evenNumbers(n) {
// TODO
}
const evenNumbers = (n) => {
let i = 0;
const evens = [];
while (evens.length < n) {
evens.push(i);
i += 2;
}
console.log(evens.join(','));
Comment thread
berkeli marked this conversation as resolved.
};

evenNumbers(3); // should output 0,2,4
evenNumbers(0); // should output nothing
Expand Down
28 changes: 16 additions & 12 deletions 1-exercises/C-while-loop-with-array/exercise.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,23 @@
*/

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
}
const findFirstJulyBDay = (birthdays) => {
let i = 0;
while (i < birthdays.length) {
if (birthdays[i].includes('July')) return birthdays[i];
i += 1;
}
};

console.log(findFirstJulyBDay(BIRTHDAYS)); // should output "July 11th"
19 changes: 14 additions & 5 deletions 1-exercises/D-do-while/exercise.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
/* eslint-disable no-multi-assign */
/*
Sometimes when using loops, we'll want to execute the body of the loop at least once. We can make sure this happens by using a do-while loop.
- If the condition in a while loop is initially false, the body of the loop will never execute
- But in a do-while loop, because the condition is checked after the body, we know that it will always execute at least once

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
}
const evenNumbersSum = (n) => {
let evenNumber = 0;
let count = 0;
let sumEvenNumbers = 0;
Comment thread
berkeli marked this conversation as resolved.
do {
sumEvenNumbers += evenNumber;
evenNumber += 2;
count++;
} while (count < n);
return sumEvenNumbers;
};

console.log(evenNumbersSum(3)); // should output 6
console.log(evenNumbersSum(0)); // should output 0
console.log(evenNumbersSum(10)); // should output 90
console.log(evenNumbersSum(10)); // should output 90
7 changes: 2 additions & 5 deletions 1-exercises/E-for-loop/exercise1.js
Original file line number Diff line number Diff line change
Expand Up @@ -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.
26 changes: 15 additions & 11 deletions 1-exercises/E-for-loop/exercise2.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,27 @@
*/

const WRITERS = [
"Virginia Woolf",
"Zadie Smith",
"Jane Austen",
"Bell Hooks",
"Yukiko Motoya"
]
'Virginia Woolf',
'Zadie Smith',
'Jane Austen',
'Bell Hooks',
'Yukiko Motoya',
];

const AGES = [
59,
40,
41,
63,
49
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:

Expand Down
24 changes: 16 additions & 8 deletions 1-exercises/F-for-of-loop/exercise.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
/* eslint-disable no-restricted-syntax */
/*
A for-of loop is a easy and way of looping through the elements of an array, string or any other "iterable object" (think sequence of elements).
A for-of loop is a easy and way of looping through the elements of an array, string or any other "iterable object" (think sequence of elements).
*/

// 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"
const tubeStations = [
'Aldgate',
'Baker Street',
'Picadilly Circus',
'Oxford Street',
'Tottenham Court Road',
];

for (const station of tubeStations) {
console.log(station);
}

// TODO Use a for-of loop to capitalise and output each letter in the string seperately.
let str = "codeyourfuture";
const str = 'codeyourfuture';

for (const letter of str) {
console.log(letter.toUpperCase());
}
73 changes: 35 additions & 38 deletions 2-mandatory/1-weather-report.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
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.

Expand All @@ -11,53 +11,50 @@
- Hint: you can call the temperatureService function from your function
*/

function getTemperatureReport(cities) {
// TODO
}

const getTemperatureReport = (cities) => cities.map((e) => `The temperature in ${e} is ${temperatureService(e)} degrees`);
Comment thread
berkeli marked this conversation as resolved.

/* ======= 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);
const 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"
]);
const 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"
]);
const 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([]);
});
expect(getTemperatureReport([])).toEqual([]);
});
26 changes: 15 additions & 11 deletions 2-mandatory/2-retrying-random-numbers.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
const getRandomNumberGreaterThan50 = () => {
let number = 0;
do {
number = generateRandomNumber();
} while (number <= 50);
return number;
};

/* ======= 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);
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);
});
Loading