Skip to content
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
47 changes: 35 additions & 12 deletions arrays-basics.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
136 changes: 87 additions & 49 deletions arrays-intermediate.js
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand All @@ -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) => {
Copy link

@AlhassanAli01 AlhassanAli01 Feb 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of using map in this function, you could've used foreach, because you're not aiming to create a new array, you're just checking if the present is there and changing the value of the presentIncluded inside the loop.

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:
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -128,7 +156,7 @@ Task 7:
];
const updatedGrades = updateGrades(students, 10);
console.log(updatedGrades);

Output:
[
{
Expand All @@ -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" },
])
);
18 changes: 9 additions & 9 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Arrays</title>
</head>
<body>
<script src="./arrays.js" type="module" />
</body>
</html>
</head>
<body>
<script src="./reviewers.js" type="module"></script>
</body>
</html>
28 changes: 21 additions & 7 deletions reviewers.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
const reviewers = require("./reviewers.json");
import reviewers from "./reviewers.json" assert {type: 'json'};
console.log("🚀 ~ file: reviewers.js:2 ~ reviewers:", reviewers);

/***********************************************************************
- This function receives a reviewer object and should return the name of the reviewer.
***********************************************************************/
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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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));