diff --git a/arrays-basics.js b/arrays-basics.js index 0de468d..d810dd7 100644 --- a/arrays-basics.js +++ b/arrays-basics.js @@ -2,46 +2,69 @@ Task 8 (logArray): Create a function logArray that receives an array as a parameter and logs each item in the array. **************************************************************/ -function logArray(arr) {} +function logArray(arr) { + arr.forEach((item) => { + console.log(item); + }); +} -// logArray([1, 2, 3, 4, 5]); +logArray([1, 2, 3, 4, 5]); /************************************************************** Task 9 (logArrayWithIndex): Create a function logArrayWithIndex that receives an array as a parameter and logs each item in the array along with its index. **************************************************************/ -function logArrayWithIndex(arr) {} +function logArrayWithIndex(arr) { + arr.forEach((item, index) => { + console.log(index + " " + item); + }); +} -// logArrayWithIndex(["apple", "banana", "orange"]); +logArrayWithIndex(["apple", "banana", "orange"]); /************************************************************** Task 10 (logEvenNumbers): Create a function logEvenNumbers that receives an array of numbers as a parameter and logs only the even numbers in the array. **************************************************************/ -function logEvenNumbers(arr) {} +function logEvenNumbers(arr) { + console.log(arr.filter((item) => item % 2 === 0)); -// logEvenNumbers([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); +} + +logEvenNumbers([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); /************************************************************** Task 11 (logArrayBackwards): Create a function logArrayBackwards that receives an array as a parameter and logs each item in the array in reverse order. **************************************************************/ -function logArrayBackwards(arr) {} +function logArrayBackwards(arr) { + arr.reverse().forEach(item => console.log(item)); +} -// logArrayBackwards(["one", "two", "three", "four"]); +logArrayBackwards(["one", "two", "three", "four"]); /************************************************************** Task 12 (logLastItem): Create a function logLastItem that receives an array as a parameter and logs the last item in the array. **************************************************************/ -function logLastItem(arr) {} +function logLastItem(arr) { + return arr[arr.length - 1]; +} -// logLastItem(["a", "b", "c", "d"]); +console.log(logLastItem(["a", "b", "c", "d"])); /************************************************************** Task 13 (logArrayInChunks): Create a function logArrayInChunks that receives an array and a chunk size as parameters and logs the items in the array in chunks of the specified size. **************************************************************/ -function logArrayInChunks(arr, chunkSize) {} +function logArrayInChunks(arr, chunkSize) { + var newArr = []; + + for (var i = 0; i < arr.length; i += chunkSize) { + newArr.push(arr.slice(i, i + chunkSize)); + } + + console.log(newArr); +} -// logArrayInChunks([1, 2, 3, 4, 5, 6, 7, 8, 9], 3); +logArrayInChunks([1, 2, 3, 4, 5, 6, 7, 8, 9], 3); diff --git a/arrays-intermediate.js b/arrays-intermediate.js index 18b8fb0..8ad6dbe 100644 --- a/arrays-intermediate.js +++ b/arrays-intermediate.js @@ -5,8 +5,11 @@ **************************************************************/ function sumArray(numbers) { //TODO: Add your code here + + let sum = numbers.reduce((sum, number) => sum + number, 0); + return sum; } -// console.log(sumArray([4, 3, 2, 5, -10])); +console.log(sumArray([4, 3, 2, 5, -10])); /************************************************************** Task 2: @@ -17,10 +20,13 @@ function sumArray(numbers) { **************************************************************/ function findFirstStringStartingWithLetter(letter, strings) { //TODO: Add your code here + return strings.find((string) => { + return string.toLowerCase().startsWith(letter.toLowerCase()) + }); } -// console.log( -// findFirstStringStartingWithLetter("h", ["Memory", "Hello", "Happy"]) -// ); +console.log( + findFirstStringStartingWithLetter("h", ["Memory", "Hello", "Happy"]) +); /************************************************************** Task 3: @@ -31,16 +37,24 @@ function findFirstStringStartingWithLetter(letter, strings) { **************************************************************/ function isPresentIncluded(presentName, presents) { //TODO: Add your code here + let presentIncluded = false + let arr = presents.map((present) => { + if (present.toLowerCase().includes(presentName)) { + presentIncluded = true; + return presentIncluded; + } + }); + return presentIncluded; } -// console.log( -// isPresentIncluded("puzzle", [ -// "Sparkling Surprise", -// "Enchanted Elegance", -// "Whimsical Wonder", -// "Joyful Jingle", -// "Puzzle", -// ]) -// ); +console.log( + isPresentIncluded("puzzle", [ + "Sparkling Surprise", + "Enchanted Elegance", + "Whimsical Wonder", + "Joyful Jingle", + "Puzzle", + ]) +); /************************************************************** Task 4: @@ -51,21 +65,22 @@ function isPresentIncluded(presentName, presents) { **************************************************************/ function sortStudentsAlphabetically(students) { //TODO: Add your code here + return students.sort(); } -// console.log( -// sortStudentsAlphabetically([ -// "Eve", -// "Jasmia", -// "Husnia", -// "Grace", -// "Bob", -// "Charlie", -// "Alice", -// "Dave", -// "Um abbas", -// "Frank", -// ]) -// ); +console.log( + sortStudentsAlphabetically([ + "Eve", + "Jasmia", + "Husnia", + "Grace", + "Bob", + "Charlie", + "Alice", + "Dave", + "Um abbas", + "Frank", + ]) +); /************************************************************** Task 5: @@ -79,8 +94,18 @@ function sortStudentsAlphabetically(students) { **************************************************************/ function separateOddEven(numbers) { //TODO: Add your code here + const evens = []; + const odds = []; + numbers.forEach((number) => { + if (number % 2 == 0) { + evens.push(number); + } else { + odds.push(number); + } + }); + return evens + " and " + odds; } -// console.log(separateOddEven([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])); +console.log(separateOddEven([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])); /************************************************************** Task 6: @@ -96,20 +121,23 @@ function separateOddEven(numbers) { const updatedItems = removeItem('#153', items); console.log(updatedItems); // Output: [{ code: "#147", name: "Scissors" }, { code: "#249", name: "Pillow" }, { code: "#149", name: "Tissue" },]; - + Hint: Use the .filter and .startsWith method **************************************************************/ function removeItem(code, items) { //TODO: Add your code here + return items.filter((item) => { + return !item.code.startsWith(code); + }); } -// console.log( -// removeItem("#153", [ -// { code: "#153", name: "Ball" }, -// { code: "#147", name: "Scissors" }, -// { code: "#249", name: "Pillow" }, -// { code: "#149", name: "Tissue" }, -// ]) -// ); +console.log( + removeItem("#153", [ + { code: "#153", name: "Ball" }, + { code: "#147", name: "Scissors" }, + { code: "#249", name: "Pillow" }, + { code: "#149", name: "Tissue" }, + ]) +); /************************************************************** Task 7: @@ -128,7 +156,7 @@ Task 7: ]; const updatedGrades = updateGrades(students, 10); console.log(updatedGrades); - + Output: [ { @@ -153,19 +181,29 @@ Task 7: { firstName: "Um Abbas", lastName: "Winston", grade: 10, type: "nerd" }, { firstName: "Johny", lastName: "Micle", grade: 20, type: "regular" }, ]; - + Hint: Use the .map method and separator operator **************************************************************/ function updateGrades(curve, students) { //TODO: Add your code here + let updatedStudents = [...students]; + updatedStudents = updatedStudents.map((student) => { + if (student.type.toLowerCase() === "nerd") { + student.grade -= curve; + } else { + student.grade += curve; + } + return student; + }); + return updatedStudents; } -// console.log( -// updateGrades(10, [ -// { firstName: "Jaber", lastName: "jabarbar", grade: 10, type: "regular" }, -// { firstName: "Hamza", lastName: "Alhamazi", grade: 12, type: "regular" }, -// { firstName: "Jasem", lastName: "Jamasmas", grade: 15, type: "nerd" }, -// { firstName: "Kadhim", lastName: "Khadhmia", grade: 5, type: "regular" }, -// { firstName: "Um Abbas", lastName: "IDK", grade: 20, type: "nerd" }, -// { firstName: "Johny", lastName: "Micle", grade: 10, type: "regular" }, -// ]) -// ); +console.log( + updateGrades(10, [ + { firstName: "Jaber", lastName: "jabarbar", grade: 10, type: "regular" }, + { firstName: "Hamza", lastName: "Alhamazi", grade: 12, type: "regular" }, + { firstName: "Jasem", lastName: "Jamasmas", grade: 15, type: "nerd" }, + { firstName: "Kadhim", lastName: "Khadhmia", grade: 5, type: "regular" }, + { firstName: "Um Abbas", lastName: "IDK", grade: 20, type: "nerd" }, + { firstName: "Johny", lastName: "Micle", grade: 10, type: "regular" }, + ]) +); diff --git a/index.html b/index.html index d971aeb..56c9d17 100644 --- a/index.html +++ b/index.html @@ -1,12 +1,12 @@ - - - - + + + + Arrays - - - + + diff --git a/reviewers.js b/reviewers.js index eda2973..4536473 100644 --- a/reviewers.js +++ b/reviewers.js @@ -1,4 +1,4 @@ -const reviewers = require("./reviewers.json"); +import reviewers from "./reviewers.json" assert {type: 'json'}; console.log("🚀 ~ file: reviewers.js:2 ~ reviewers:", reviewers); /*********************************************************************** @@ -6,16 +6,18 @@ console.log("🚀 ~ file: reviewers.js:2 ~ reviewers:", reviewers); ***********************************************************************/ function getReviewerName(reviewer) { //TODO: ADD YOUR CODE HERE + return reviewer.reviewerName; } -// console.log(getReviewerName(reviewers[0])); +console.log(getReviewerName(reviewers[0])); /*********************************************************************** - Receives a reviewer object and returns the number of reviews that reviewer has done. ************************************************************************/ function numberOfReviews(reviewer) { //TODO: ADD YOUR CODE HERE + return reviewer.books.length; } -// console.log(numberOfReviews(reviewers[0])); +console.log(numberOfReviews(reviewers[0])); /*********************************************************************** - Receives a review title (string) and a reviewer object, @@ -25,8 +27,11 @@ function numberOfReviews(reviewer) { ***********************************************************************/ function reviewerHasReview(reviewTitle, reviewer) { //TODO: ADD YOUR CODE HERE + return reviewer.books.some((book) => { + return book.title.toLowerCase() === reviewTitle.toLowerCase(); + }); } -// console.log(reviewerHasReview("Becoming", reviewers[0])); +console.log(reviewerHasReview("Becoming", reviewers[0])); /************************************************************** - Receives a reviewer name (string) and an array of reviewer objects, @@ -35,8 +40,11 @@ function reviewerHasReview(reviewTitle, reviewer) { ****************************************************************/ function getReviewerByName(reviewerName, reviewers) { //TODO: ADD YOUR CODE HERE + return reviewers.find(reviewer => { + return reviewer.reviewerName.toLowerCase() === reviewerName.toLowerCase(); + }); } -// console.log(getReviewerByName("Michelle Obama", reviewers)); +console.log(getReviewerByName("Michelle Obama", reviewers)); /************************************************************** - Receives a review title (string) and an array of reviewer objects, @@ -45,8 +53,11 @@ function getReviewerByName(reviewerName, reviewers) { ****************************************************************/ function getReviewerByReviewTitle(reviewTitle, reviewers) { //TODO: ADD YOUR CODE HERE + return reviewers.find(reviewer => { + return reviewer.books.some(book => { return book.title.toLowerCase() == reviewTitle.toLowerCase() }); + }); } -// console.log(getReviewerByReviewTitle("The Overstory", reviewers)); +console.log(getReviewerByReviewTitle("The Overstory", reviewers)); /************************************************************** - Receives a query (string) and an array of reviewer objects, @@ -55,5 +66,8 @@ function getReviewerByReviewTitle(reviewTitle, reviewers) { ****************************************************************/ function searchReviewers(query, reviewers) { //TODO: ADD YOUR CODE HERE + return reviewers.filter(reviewer => { + return reviewer.reviewerName.includes(query) || reviewer.description.includes(query); + }) } -// console.log(searchReviewers("o", reviewers)); +console.log(searchReviewers("o", reviewers));