Skip to content

Commit f8ff4b8

Browse files
committed
#22 - JavaScript
1 parent 372cbed commit f8ff4b8

File tree

1 file changed

+47
-32
lines changed

1 file changed

+47
-32
lines changed

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

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,21 @@ Array.prototype.customMap = function (callback) {
1414

1515
console.log(arr.customMap((n) => n * 2));
1616

17-
/*
18-
* DIFICULTAD EXTRA (opcional):
19-
* Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y
20-
* lista de calificaciones), utiliza funciones de orden superior para
21-
* realizar las siguientes operaciones de procesamiento y análisis:
22-
* - Promedio calificaciones: Obtiene una lista de estudiantes por nombre
23-
* y promedio de sus calificaciones.
24-
* - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes
25-
* que tienen calificaciones con un 9 o más de promedio.
26-
* - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven.
27-
* - Mayor calificación: Obtiene la calificación más alta de entre todas las
28-
* de los alumnos.
29-
* - Una calificación debe estar comprendida entre 0 y 10 (admite decimales).
30-
*/
31-
17+
//EXTRA
3218
let myStudents = [];
3319
let bestStudents = [];
3420

3521
class Student {
3622
constructor(name, grades, birthDate) {
3723
this.name = name;
38-
this.grades = grades;
3924
this.birthDate = birthDate;
25+
this.grades = grades;
4026
this.age = this.getAge();
4127
this.average = this.getAverage();
28+
4229
myStudents.push(this);
4330

44-
if (this.getAverage() >= 9) {
31+
if (this.average >= 9) {
4532
bestStudents.push(this);
4633
}
4734
}
@@ -57,44 +44,72 @@ class Student {
5744

5845
getAge() {
5946
let now = new Date();
60-
let age = Math.floor(
61-
(now.getTime() - this.birthDate.getTime()) / (365 * 24 * 60 * 60 * 1000)
62-
);
47+
let age =
48+
(now.getTime() - this.birthDate.getTime()) / (365 * 24 * 60 * 60 * 1000);
6349
return age;
6450
}
6551
}
6652

6753
new Student('Sophie', [8, 8, 7, 9], new Date(2002, 8, 21));
54+
new Student('Rebeca', [8, 9, 10, 9], new Date(2001, 4, 16));
6855
new Student('David', [7, 6, 9, 8], new Date(2003, 0, 15));
6956
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));
7157
new Student('Robert', [10, 10, 10, 9], new Date(2002, 0, 16));
7258

7359
function getHighestAverage() {
7460
let result;
7561
let average = 0;
7662
bestStudents.forEach((element) => {
77-
if (element.getAverage() > average) {
63+
if (element.average > average) {
7864
result = element;
7965
}
8066
});
8167
return result;
8268
}
83-
8469
let highestAverage = getHighestAverage();
8570

86-
function sortByAge() {}
71+
//Pendiente por revisar
72+
function sortByAge() {
73+
for (let i = 0; i < myStudents.length; i++) {
74+
for (let j = i + 1; j < myStudents.length; j++) {
75+
if (myStudents[i].age > myStudents[j].age) {
76+
let change = myStudents[i];
77+
myStudents[i] = myStudents[j];
78+
myStudents[j] = change;
79+
}
80+
}
81+
}
8782

88-
console.log(
89-
`\n${highestAverage.name} ha obtenido el mayor promedio de la clase: ${highestAverage.average}\n`
90-
);
83+
return myStudents;
84+
}
9185

92-
console.log(myStudents.find((element) => element.name === 'David'));
86+
let sortedByAge = sortByAge();
9387

94-
myStudents.customMap((element) => {
95-
console.log(`\nEl promedio de ${element.name} es de ${element.average}`);
88+
let sortedByAverage = myStudents.sort(function (a, b) {
89+
return a.average - b.average;
9690
});
9791

98-
myStudents.customMap((element) => {
99-
console.log(`\nEl nacimiento de ${element.name} fue el ${element.birthDate}`);
92+
console.log('\nLISTA DE PROMEDIOS');
93+
94+
sortedByAverage.customMap((element) => {
95+
console.log(`\n${element.name}: ${element.average}`);
96+
});
97+
98+
console.log('\nMEJORES ESTUDIANTES');
99+
100+
bestStudents.customMap((element) => {
101+
console.log(`\n${element.name}: ${element.average}`);
100102
});
103+
104+
console.log('\nLISTA DE NACIMIENTOS');
105+
106+
sortedByAge.customMap((element) => {
107+
console.log(`\n${element.name}: ${element.birthDate.toLocaleString()}`);
108+
console.log(`${Math.floor(element.age)} años`);
109+
});
110+
111+
console.log('\nMEJOR PROMEDIO DE LA CLASE');
112+
113+
console.log(
114+
`\nFelicidades a ${highestAverage.name}. Con un ${highestAverage.average} se ha coronado como el mejor promedio de la clase`
115+
);

0 commit comments

Comments
 (0)