Skip to content

Commit 81994d7

Browse files
committed
#22 - JavaScript
1 parent a48425c commit 81994d7

File tree

1 file changed

+51
-10
lines changed

1 file changed

+51
-10
lines changed

Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/RicMonster1.js

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,71 @@ console.log(arr.customMap((n) => n * 2));
3030
*/
3131

3232
let myStudents = [];
33+
let bestStudents = [];
3334

3435
class Student {
35-
constructor(name, grades, date, month, year) {
36+
constructor(name, grades, birthDate) {
3637
this.name = name;
3738
this.grades = grades;
38-
let birthDateNoFormat = new Date(year, month - 1, date);
39-
this.birthDate = birthDateNoFormat.toLocaleString();
39+
this.birthDate = birthDate;
40+
this.age = this.getAge();
41+
this.average = this.getAverage();
4042
myStudents.push(this);
43+
44+
if (this.getAverage() >= 9) {
45+
bestStudents.push(this);
46+
}
4147
}
4248

4349
getAverage() {
4450
let result = 0;
4551
this.grades.forEach((element) => {
4652
result = result + element;
4753
});
48-
return result / this.grades.length;
54+
let average = result / this.grades.length;
55+
return average;
56+
}
57+
58+
getAge() {
59+
let now = new Date();
60+
let age = Math.floor(
61+
(now.getTime() - this.birthDate.getTime()) / (365 * 24 * 60 * 60 * 1000)
62+
);
63+
return age;
4964
}
5065
}
5166

52-
new Student('Sophie', [8, 8, 7, 9], 12, 11, 2004);
53-
new Student('David', [7, 6, 9, 8], 23, 1, 2005);
54-
new Student('Eliezer', [4, 6, 7, 5], 21, 2, 2005);
55-
new Student('Rebeca', [8, 9, 10, 9], 16, 5, 2005);
67+
new Student('Sophie', [8, 8, 7, 9], new Date(2002, 8, 21));
68+
new Student('David', [7, 6, 9, 8], new Date(2003, 0, 15));
69+
new Student('Eliezer', [4, 6, 7, 5], new Date(2005, 1, 21));
70+
new Student('Rebeca', [8, 9, 10, 9], new Date(2001, 4, 16));
71+
new Student('Robert', [10, 10, 10, 9], new Date(2002, 0, 16));
72+
73+
function getHighestAverage() {
74+
let result;
75+
let average = 0;
76+
bestStudents.forEach((element) => {
77+
if (element.getAverage() > average) {
78+
result = element;
79+
}
80+
});
81+
return result;
82+
}
83+
84+
let highestAverage = getHighestAverage();
85+
86+
function sortByAge() {}
87+
88+
console.log(
89+
`\n${highestAverage.name} ha obtenido el mayor promedio de la clase: ${highestAverage.average}\n`
90+
);
91+
92+
console.log(myStudents.find((element) => element.name === 'David'));
93+
94+
myStudents.customMap((element) => {
95+
console.log(`\nEl promedio de ${element.name} es de ${element.average}`);
96+
});
5697

57-
myStudents.forEach((element) => {
58-
console.log(`\nEl promedio de ${element.name} es de ${element.getAverage()}`);
98+
myStudents.customMap((element) => {
99+
console.log(`\nEl nacimiento de ${element.name} fue el ${element.birthDate}`);
59100
});

0 commit comments

Comments
 (0)