diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..e4063e86
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,6 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+/.idea
diff --git a/.idea/JavaScript-Core-1-Coursework-Week4.iml b/.idea/JavaScript-Core-1-Coursework-Week4.iml
new file mode 100644
index 00000000..0c8867d7
--- /dev/null
+++ b/.idea/JavaScript-Core-1-Coursework-Week4.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..7819e8a9
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1-exercises/A-array-find/exercise.js b/1-exercises/A-array-find/exercise.js
index 35902fed..ab62a48a 100644
--- a/1-exercises/A-array-find/exercise.js
+++ b/1-exercises/A-array-find/exercise.js
@@ -4,6 +4,13 @@
*/
// write your code here
+function isLongNameAndStartsWithA(name) {
+ return name.length > 7 && name.startsWith('A');
+}
+
+function findLongNameThatStartsWithA(array){
+ return array.find(isLongNameAndStartsWithA)
+}
let names = [
"Rakesh",
diff --git a/1-exercises/B-array-some/exercise.js b/1-exercises/B-array-some/exercise.js
index fddc69ee..a765a7f3 100644
--- a/1-exercises/B-array-some/exercise.js
+++ b/1-exercises/B-array-some/exercise.js
@@ -7,11 +7,18 @@
*/
let pairsByIndex = [[0, 3], [1, 2], [2, 1], null, [3, 0]];
-
+function isNull(item) {
+ return item === null;
+}
// If there is a null value in the array exit the program with the error code
// https://nodejs.org/api/process.html#process_process_exit_code
// process.exit(1);
+if (pairsByIndex.some(isNull)){
+ console.log('exit code 1');
+ process.exit(1);
+}
+
let students = ["Islam", "Lesley", "Harun", "Rukmini"];
let mentors = ["Daniel", "Irina", "Mozafar", "Luke"];
diff --git a/1-exercises/C-array-every/exercise.js b/1-exercises/C-array-every/exercise.js
index 347b9632..74ec5787 100644
--- a/1-exercises/C-array-every/exercise.js
+++ b/1-exercises/C-array-every/exercise.js
@@ -5,7 +5,7 @@
let students = ["Omar", "Austine", "Dany", "Swathi", "Lesley", "Rukmini"];
let group = ["Austine", "Dany", "Swathi", "Daniel"];
-let groupIsOnlyStudents; // complete this statement
+let groupIsOnlyStudents = group.every(name=>students.includes(name)); // complete this statement
if (groupIsOnlyStudents) {
console.log("The group contains only students");
diff --git a/1-exercises/D-array-filter/exercise.js b/1-exercises/D-array-filter/exercise.js
index 51837028..bb1973ec 100644
--- a/1-exercises/D-array-filter/exercise.js
+++ b/1-exercises/D-array-filter/exercise.js
@@ -8,7 +8,7 @@
let pairsByIndexRaw = [[0, 3], [1, 2], [2, 1], null, [1], false, "whoops"];
-let pairsByIndex; // Complete this statement
+let pairsByIndex = pairsByIndexRaw.filter(pair=> Array.isArray(pair) && pair.length === 2); // Complete this statement
let students = ["Islam", "Lesley", "Harun", "Rukmini"];
let mentors = ["Daniel", "Irina", "Mozafar", "Luke"];
diff --git a/1-exercises/E-array-map/exercise.js b/1-exercises/E-array-map/exercise.js
index 5a157279..91d4b71d 100644
--- a/1-exercises/E-array-map/exercise.js
+++ b/1-exercises/E-array-map/exercise.js
@@ -3,7 +3,7 @@
let numbers = [0.1, 0.2, 0.3, 0.4, 0.5];
-let numbersMultipliedByOneHundred; // complete this statement
+let numbersMultipliedByOneHundred = numbers.map(n => n*100); // complete this statement
console.log(numbersMultipliedByOneHundred);
diff --git a/1-exercises/F-array-forEach/exercise.js b/1-exercises/F-array-forEach/exercise.js
index 985068cc..4ec11345 100644
--- a/1-exercises/F-array-forEach/exercise.js
+++ b/1-exercises/F-array-forEach/exercise.js
@@ -9,6 +9,18 @@
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
+arr.forEach(num => {
+ if(num % 3 === 0 && num % 5 === 0) {
+ console.log('FizzBuzz');
+ } else if(num % 5 === 0) {
+ console.log('Buzz');
+ } else if(num % 3 === 0){
+ console.log('Fizz');
+ } else {
+ console.log(num);
+ }
+})
+
/* EXPECTED OUTPUT */
/*
diff --git a/1-exercises/G-array-methods/exercise.js b/1-exercises/G-array-methods/exercise.js
index 4367ef6e..bc504f2a 100644
--- a/1-exercises/G-array-methods/exercise.js
+++ b/1-exercises/G-array-methods/exercise.js
@@ -4,7 +4,7 @@
*/
let numbers = [3, 2, 1];
-let sortedNumbers; // complete this statement
+let sortedNumbers = numbers.sort(); // complete this statement
/*
DO NOT EDIT BELOW THIS LINE
diff --git a/1-exercises/G-array-methods/exercise2.js b/1-exercises/G-array-methods/exercise2.js
index 4c68c3a6..fb100649 100644
--- a/1-exercises/G-array-methods/exercise2.js
+++ b/1-exercises/G-array-methods/exercise2.js
@@ -7,7 +7,7 @@
let mentors = ["Daniel", "Irina", "Rares"];
let students = ["Rukmini", "Abdul", "Austine", "Swathi"];
-let everyone; // complete this statement
+let everyone = mentors.concat(students); // complete this statement
/*
DO NOT EDIT BELOW THIS LINE
diff --git a/1-exercises/H-array-methods-2/exercise.js b/1-exercises/H-array-methods-2/exercise.js
index 59c5daa7..02adbaa8 100644
--- a/1-exercises/H-array-methods-2/exercise.js
+++ b/1-exercises/H-array-methods-2/exercise.js
@@ -15,8 +15,8 @@ let everyone = [
"Swathi",
];
-let firstFive; // complete this statement
-let lastFive; // complete this statement
+let firstFive = everyone.slice(0, 5); // complete this statement
+let lastFive = everyone.slice(-5); // complete this statement
/*
DO NOT EDIT BELOW THIS LINE
diff --git a/1-exercises/H-array-methods-2/exercise2.js b/1-exercises/H-array-methods-2/exercise2.js
index 14bb4318..b2dfea69 100644
--- a/1-exercises/H-array-methods-2/exercise2.js
+++ b/1-exercises/H-array-methods-2/exercise2.js
@@ -7,7 +7,9 @@
Tip: use the string method .split() and the array method .join()
*/
-function capitalise(str) {}
+function capitalise(str) {
+ return str.split('')[0].toUpperCase() + str.slice(1)
+}
/*
DO NOT EDIT BELOW THIS LINE
diff --git a/1-exercises/H-array-methods-2/exercise3.js b/1-exercises/H-array-methods-2/exercise3.js
index c8e079e4..7279417e 100644
--- a/1-exercises/H-array-methods-2/exercise3.js
+++ b/1-exercises/H-array-methods-2/exercise3.js
@@ -7,7 +7,7 @@
let ukNations = ["Scotland", "Wales", "England", "Northern Ireland"];
function isInUK(country) {
- return; // complete this statement
+ return ukNations.includes(country); // complete this statement
}
/*
diff --git a/1-exercises/I-string-replace/exercise.js b/1-exercises/I-string-replace/exercise.js
index 3f7104d7..5f7ff508 100644
--- a/1-exercises/I-string-replace/exercise.js
+++ b/1-exercises/I-string-replace/exercise.js
@@ -13,7 +13,10 @@
let story =
"I like dogs. One day I went to the park and I saw 10 dogs. It was a great day.";
-let result = story.replace("", "");
+let result = story.replace("dogs", "cats");
+result = result.replace("day", "night");
+result = result.replace("10 dogs", "100000 cats");
+result = result.replace("great day", "brilliant night");
/* EXPECTED OUTPUT */
diff --git a/1-exercises/J-string-substring/exercise.js b/1-exercises/J-string-substring/exercise.js
index 4624db68..14288304 100644
--- a/1-exercises/J-string-substring/exercise.js
+++ b/1-exercises/J-string-substring/exercise.js
@@ -6,7 +6,7 @@
let statement = "I like programming and dogs";
-statement = statement.substring();
+statement = statement.substring(0, 18);
console.log(statement);
diff --git a/1-exercises/J-string-substring/exercise2.js b/1-exercises/J-string-substring/exercise2.js
index a1d9bf62..cb541c6a 100644
--- a/1-exercises/J-string-substring/exercise2.js
+++ b/1-exercises/J-string-substring/exercise2.js
@@ -14,11 +14,11 @@ let names = [
"Arron Graham",
];
-names[0] = names[0].substring();
-names[1] = names[1].substring();
-names[2] = names[2].substring();
-names[3] = names[3].substring();
-names[4] = names[4].substring();
+names[0] = names[0].substring(0, 6);
+names[1] = names[1].substring(0, 7);
+names[2] = names[2].substring(0, 4);
+names[3] = names[3].substring(0, 4);
+names[4] = names[4].substring(0, 5);
names.forEach((name) => {
console.log(name);
diff --git a/1-exercises/J-string-substring/exercise3.js b/1-exercises/J-string-substring/exercise3.js
index 14f77417..eac8f468 100644
--- a/1-exercises/J-string-substring/exercise3.js
+++ b/1-exercises/J-string-substring/exercise3.js
@@ -8,7 +8,7 @@
let statement = "I do not like programming";
-let result = "";
+let result = statement.substring(0, 4) + statement.substring(8, statement.length);
console.log(result);
diff --git a/2-mandatory/1-create-functions.js b/2-mandatory/1-create-functions.js
index 6df12961..b2bb68fb 100644
--- a/2-mandatory/1-create-functions.js
+++ b/2-mandatory/1-create-functions.js
@@ -3,7 +3,8 @@ Write a function that:
- Accepts an array as a parameter.
- Returns a new array containing the first five elements of the passed array.
*/
-function first5() {
+function first5(array) {
+ return array.slice(0,5);
}
/*
@@ -11,7 +12,10 @@ Write a function that:
- Accepts an array as a parameter.
- Returns a new array containing the same elements, except sorted.
*/
-function sortArray() {
+function sortArray(array) {
+ let res = [...array];
+ return res.sort();
+
}
/*
@@ -24,7 +28,13 @@ Write a function that:
- Removes any forward slashes (/) in the strings.
- Makes the strings all lowercase.
*/
-function tidyUpString() {
+function tidyUpString(array) {
+ return array.map(string => {
+ let res = string.trim();
+ res = res.replace('/', '');
+ res = res.toLowerCase()
+ return res;
+ })
}
/*
@@ -33,7 +43,8 @@ Write a function that:
- Returns a new array containing the same elements, but without the element at the passed index.
*/
-function remove() {
+function remove(array, index) {
+ return array.filter((item, i) => i !== index);
}
/*
@@ -44,7 +55,12 @@ Write a function that:
- Numbers greater 100 must be replaced with 100.
*/
-function formatPercentage() {
+function formatPercentage(array) {
+ return array.map(num => {
+ let res = num > 100 ? 100 : num;
+ res = (Math.round(res * 100) / 100) + "%";
+ return res;
+ })
}
/* ======= TESTS - DO NOT MODIFY ===== */
diff --git a/2-mandatory/2-oxygen-levels.js b/2-mandatory/2-oxygen-levels.js
index 5711c5e5..2cfd9992 100644
--- a/2-mandatory/2-oxygen-levels.js
+++ b/2-mandatory/2-oxygen-levels.js
@@ -11,7 +11,17 @@
Some string methods that might help you here are .replace() and .substring().
*/
-function findSafeOxygenLevel() {}
+function findSafeOxygenLevel(planets) {
+ let checkPlanet = planets.filter(item => item.includes("%"));
+ return checkPlanet.find(item => {
+ let itemNum = Number(item.replace('%', ''));
+ if(itemNum > 19.5 && itemNum < 23.5){
+ return item;
+ }
+ });
+
+
+}
/* ======= TESTS - DO NOT MODIFY ===== */
diff --git a/2-mandatory/3-bush-berries.js b/2-mandatory/3-bush-berries.js
index b434a507..0c1727e8 100644
--- a/2-mandatory/3-bush-berries.js
+++ b/2-mandatory/3-bush-berries.js
@@ -22,7 +22,13 @@
*/
function isBushSafe(berryArray) {
- //Write your code here
+ const hasToxicBerries = berryArray.some((berry) => berry !== 'pink');
+
+ if (hasToxicBerries) {
+ return 'Toxic! Leave bush alone!';
+ } else {
+ return 'Bush is safe to eat from';
+ }
}
/* ======= TESTS - DO NOT MODIFY ===== */
diff --git a/2-mandatory/4-space-colonies.js b/2-mandatory/4-space-colonies.js
index 30095213..97854db2 100644
--- a/2-mandatory/4-space-colonies.js
+++ b/2-mandatory/4-space-colonies.js
@@ -15,7 +15,15 @@
*/
-function getSettlers() {}
+function getSettlers(families) {
+ return families.filter(family => {
+ if (typeof family === 'string') {
+ const trimmedFamily = family.trim();
+ //return trimmedFamily.startsWith('A') && trimmedFamily.endsWith('family');})
+ return trimmedFamily[0] === 'A' && trimmedFamily.slice(-6) === 'family'
+ }
+ });
+}
/* ======= TESTS - DO NOT MODIFY ===== */
diff --git a/2-mandatory/5-eligible-students.js b/2-mandatory/5-eligible-students.js
index f92478e0..bcb8abe0 100644
--- a/2-mandatory/5-eligible-students.js
+++ b/2-mandatory/5-eligible-students.js
@@ -7,7 +7,9 @@
- Returns an array containing only the names of the who have attended AT LEAST 8 classes
*/
-function getEligibleStudents() {}
+function getEligibleStudents(students) {
+ return students.filter(student => student[1] >= 8).map(student=> student[0]);
+}
/* ======= TESTS - DO NOT MODIFY ===== */
diff --git a/2-mandatory/6-journey-planner.js b/2-mandatory/6-journey-planner.js
index 25a14083..852d6985 100644
--- a/2-mandatory/6-journey-planner.js
+++ b/2-mandatory/6-journey-planner.js
@@ -20,8 +20,8 @@
function checkCodeIsThere(stringText) {
let magicWord = "code";
//edit code below
- if (stringText) {
- return stringText;
+ if (stringText.includes(magicWord)) {
+ return stringText.indexOf(magicWord);
} else {
return "Not found";
}
@@ -64,7 +64,9 @@ function checkCodeIsThere(stringText) {
Hint: Use the corresponding array method to split the array.
*/
-function getTransportModes() {}
+function getTransportModes(location) {
+ return location.slice(1);
+}
/*
Implement the function isAccessibleByTransportMode that
@@ -81,7 +83,9 @@ function getTransportModes() {}
Hint: Use the corresponding array method to decide if an element is included in an array.
*/
-function isAccessibleByTransportMode() {}
+function isAccessibleByTransportMode(transportsArray, transportMode) {
+ return transportsArray.includes(transportMode);
+}
/*
Implement the function getLocationName that
@@ -92,7 +96,9 @@ function isAccessibleByTransportMode() {}
- Returns the name of the location
e.g: "Tower Bridge"
*/
-function getLocationName() {}
+function getLocationName(locations) {
+ return locations[0];
+}
/*
We arrived at the final method. it won't take long if you use the previously implemented functions wisely.
@@ -122,7 +128,7 @@ function getLocationName() {}
Advanced challange: try to use arrow function when invoking an array method.
*/
function journeyPlanner(locations, transportMode) {
- // Implement the function body
+ return locations.filter(location => location.includes(transportMode)).map(location => getLocationName(location))
}
/* ======= TESTS - DO NOT MODIFY ===== */
diff --git a/2-mandatory/7-lane-names.js b/2-mandatory/7-lane-names.js
index 40c31b68..199d8eff 100644
--- a/2-mandatory/7-lane-names.js
+++ b/2-mandatory/7-lane-names.js
@@ -6,7 +6,9 @@
HINT: string and array methods that could be helpful (indexOf, filter)
*/
-function getLanes() {}
+function getLanes(streets) {
+ return streets.filter(street => street.includes('Lane'));
+}
/* ======= TESTS - DO NOT MODIFY ===== */
diff --git a/2-mandatory/8-password-validator.js b/2-mandatory/8-password-validator.js
index dc3e84d6..3608e602 100644
--- a/2-mandatory/8-password-validator.js
+++ b/2-mandatory/8-password-validator.js
@@ -23,7 +23,18 @@ PasswordValidationResult= [false, false, false, false, true]
*/
-function validatePasswords(passwords) {}
+function validatePasswords(passwords) {
+ return passwords.map((password, index) => {
+ const uniqueValid = !passwords.slice(0, index).includes(password);
+ return (
+ password.length >=5 &&
+ containsUppercaseLetter(password) &&
+ containsLowercaseLetter(password) &&
+ containsNumber(password) &&
+ containsSymbol(password)) &&
+ uniqueValid;
+ })
+}
// Returns true if string contains at least one uppercase letter.
function containsUppercaseLetter(string) {