Skip to content

Commit 800dee9

Browse files
authored
Merge pull request mouredev#6923 from caterinarodriguezdev/22-javascript
#22-javascript
2 parents 52121f1 + 4464ff8 commit 800dee9

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de funciones de orden superior en tu lenguaje
4+
* creando ejemplos simples (a tu elección) que muestren su funcionamiento.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y
8+
* lista de calificaciones), utiliza funciones de orden superior para
9+
* realizar las siguientes operaciones de procesamiento y análisis:
10+
* - Promedio calificaciones: Obtiene una lista de estudiantes por nombre
11+
* y promedio de sus calificaciones.
12+
* - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes
13+
* que tienen calificaciones con un 9 o más de promedio.
14+
* - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven.
15+
* - Mayor calificación: Obtiene la calificación más alta de entre todas las
16+
* de los alumnos.
17+
* - Una calificación debe estar comprendida entre 0 y 10 (admite decimales).
18+
*/
19+
20+
const devolverFuncion = () => {
21+
22+
const sum = (num1, num2) => num1 + num2;
23+
24+
return sum;
25+
}
26+
27+
const funcionDevuelta = devolverFuncion();
28+
29+
console.log(funcionDevuelta(1, 1));
30+
31+
console.log('----------DIFICULTAD EXTRA---------');
32+
33+
let estudiantes = [
34+
{
35+
nombre: 'Grace',
36+
fechaNacimiento: '27/07/1999',
37+
calificaciones: [10, 9, 8.5]
38+
},
39+
{
40+
nombre: 'Cate',
41+
fechaNacimiento: '12/08/1999',
42+
calificaciones: [9, 6]
43+
},
44+
{
45+
nombre: 'Valeria',
46+
fechaNacimiento: '24/04/2007',
47+
calificaciones: [9.9, 7]
48+
},
49+
];
50+
51+
const getExpediente = (calcularPromedio, getMejoresEstudiantes, orderEstudiantesByBirth, getMayorNota) => {
52+
53+
console.log('Promedios: ',calcularPromedio());
54+
console.log('Mejores estudiantes', getMejoresEstudiantes());
55+
console.log('Nacimientos', orderEstudiantesByBirth());
56+
console.log('Mayor nota', getMayorNota());
57+
}
58+
59+
const calcularPromedio = () => {
60+
let promedios = {};
61+
62+
estudiantes.forEach(estudiante => {
63+
let suma = 0;
64+
estudiante.calificaciones.forEach(cal => suma += cal);
65+
let promedio = suma / estudiante.calificaciones.length;
66+
67+
let nombre = estudiante.nombre;
68+
promedios[nombre] = promedio;
69+
});
70+
71+
return promedios;
72+
}
73+
74+
const getMejoresEstudiantes = () => {
75+
const promedios = calcularPromedio();
76+
77+
const mejoresEstudiantes = Object.entries(promedios).filter(([nombre, promedio]) => promedio > 9);
78+
const resultado = Object.fromEntries(mejoresEstudiantes);
79+
80+
return resultado;
81+
}
82+
83+
const orderEstudiantesByBirth = () => {
84+
85+
return estudiantes.sort((a, b) => new Date(a.fechaNacimiento) - new Date(b.fechaNacimiento));
86+
}
87+
88+
const getMayorNota = () => {
89+
90+
return Math.max(...estudiantes.flatMap(estudiante => estudiante.calificaciones))
91+
}
92+
93+
getExpediente(calcularPromedio, getMejoresEstudiantes, orderEstudiantesByBirth, getMayorNota);

0 commit comments

Comments
 (0)