1. map v/s forEach
map returns modified array, but forEach wont return anything. Also map can be chained with fiter, map & reduce but forEach can't be chanined since it won't return anything.
const arr = [1, 2, 3, 4];
const a = arr.map((num) => num * 2);
console.log(a);
console.log(arr);
// [ 2, 4, 6, 8 ]
// [ 1, 2, 3, 4 ]
const b = arr.forEach((num, i) => {
arr[i] = num * 2
});
console.log(b);
console.log(arr);
// undefined
// [ 2, 4, 6, 8 ]
2. Return only name of students in uppercase
const STUDENTS = [
{ name: "Arjunan", rollNo: 22, marks: 99 },
{ name: "Ramos", rollNo: 12, marks: 70 },
{ name: "Ronaldo", rollNo: 20, marks: 50 },
{ name: "Messi", rollNo: 1, marks: 50 },
];
const ans = STUDENTS.map((student) => student.name.toUpperCase());
console.log(ans);
// [ 'ARJUNAN', 'RAMOS', 'RONALDO', 'MESSI' ]
3. Return details of students who scored more than 60
const STUDENTS = [
{ name: "Arjunan", rollNo: 22, marks: 99 },
{ name: "Ramos", rollNo: 12, marks: 70 },
{ name: "Ronaldo", rollNo: 20, marks: 50 },
{ name: "Messi", rollNo: 1, marks: 50 },
];
const ans = STUDENTS.filter((student) => student.marks > 60);
console.log(ans);
// Output:
[
{ name: "Arjunan", rollNo: 22, marks: 99 },
{ name: "Ramos", rollNo: 12, marks: 70 },
];
4. Return students whose score > 60 and roll no < 15
const STUDENTS = [
{ name: "Arjunan", rollNo: 22, marks: 99 },
{ name: "Ramos", rollNo: 12, marks: 70 },
{ name: "Ronaldo", rollNo: 20, marks: 50 },
{ name: "Messi", rollNo: 1, marks: 50 },
];
const ans = STUDENTS.filter(
(student) => student.marks > 60 && student.rollNo < 15
);
console.log(ans);
// Output:
[{ name: "Ramos", rollNo: 12, marks: 70 }];
5. Sum of marks of all Students
const STUDENTS = [
{ name: "Arjunan", rollNo: 22, marks: 99 },
{ name: "Ramos", rollNo: 12, marks: 70 },
{ name: "Ronaldo", rollNo: 20, marks: 50 },
{ name: "Messi", rollNo: 1, marks: 50 },
];
const ans = STUDENTS.reduce((prev, student) => prev + student.marks, 0);
console.log(ans);
// Output:
269;
6. Return name of students whose marks is greater than 60
const STUDENTS = [
{ name: "Arjunan", rollNo: 22, marks: 99 },
{ name: "Ramos", rollNo: 12, marks: 70 },
{ name: "Ronaldo", rollNo: 20, marks: 50 },
{ name: "Messi", rollNo: 1, marks: 50 },
];
const ans = STUDENTS.filter((student) => student.marks > 60).map(
(student) => student.name
);
console.log(ans);
// Output:
["Arjunan", "Ramos"];
7. Return total marks for students with marks greater than 60 after 20 marks have been added to those who scored less than 60
const STUDENTS = [
{ name: "Arjunan", rollNo: 22, marks: 99 },
{ name: "Ramos", rollNo: 12, marks: 70 },
{ name: "Ronaldo", rollNo: 20, marks: 50 },
{ name: "Messi", rollNo: 1, marks: 40 },
];
const ans = STUDENTS.map((student) => {
if (student.marks < 60) {
student.marks = student.marks + 20;
}
return student;
})
.filter((student) => student.marks > 60)
.reduce((prev, student) => prev + student.marks, 0);
console.log(ans);
// Output:
239;