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 ]
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 , getNacimiento , getMayorNota ) => {
52
+
53
+ console . log ( calcularPromedio ( ) ) ;
54
+ console . log ( 'Mejores estudiantes' , getMejoresEstudiantes ( ) ) ;
55
+ }
56
+
57
+ const calcularPromedio = ( ) => {
58
+ let promedios = { } ;
59
+
60
+ estudiantes . forEach ( estudiante => {
61
+ let suma = 0 ;
62
+ estudiante . calificaciones . forEach ( cal => suma += cal ) ;
63
+ let promedio = suma / estudiante . calificaciones . length ;
64
+
65
+ let nombre = estudiante . nombre ;
66
+ promedios [ nombre ] = promedio ;
67
+ } ) ;
68
+
69
+ return promedios ;
70
+ }
71
+
72
+ const getMejoresEstudiantes = ( ) => {
73
+ const promedios = calcularPromedio ( ) ;
74
+
75
+ const promediosArray = Object . entries ( promedios ) ;
76
+ const mejoresEstudiantes = promediosArray . filter ( ( [ nombre , promedio ] ) => promedio > 9 ) ;
77
+ const resultado = Object . fromEntries ( mejoresEstudiantes ) ;
78
+
79
+ return resultado ;
80
+ }
81
+
82
+ getExpediente ( calcularPromedio , getMejoresEstudiantes ) ;
0 commit comments