|  | 
|  | 1 | +const frutas = ['Manzana', 'Banana', 'Fresa', 'Uva', 'Mango', 'Pera', 'Kiwi', 'Durazno', 'Sandía', 'Naranja', 'Cereza'] | 
|  | 2 | + | 
|  | 3 | +const crearFiltroPorLetra = (letra) => { | 
|  | 4 | +  return function (fruta) { | 
|  | 5 | +    return fruta.startsWith(letra) | 
|  | 6 | +  } | 
|  | 7 | +} | 
|  | 8 | + | 
|  | 9 | +const filtrarPorM = crearFiltroPorLetra('M') | 
|  | 10 | +const frutasConM = frutas.filter(filtrarPorM) | 
|  | 11 | + | 
|  | 12 | +console.log(frutasConM) | 
|  | 13 | + | 
|  | 14 | +// DIFICULTAD EXTRA | 
|  | 15 | +const estudiantes = [ | 
|  | 16 | +  { nombres: 'Eduardo Molina', fechaNacimiento: '1999-08-30', calificaciones: [10, 8, 9, 10] }, | 
|  | 17 | +  { nombres: 'Lucía Torres', fechaNacimiento: '2001-05-15', calificaciones: [9, 7, 8, 10] }, | 
|  | 18 | +  { nombres: 'Carlos Jiménez', fechaNacimiento: '2000-11-22', calificaciones: [6, 9, 8, 7] }, | 
|  | 19 | +  { nombres: 'Ana Pérez', fechaNacimiento: '1998-12-10', calificaciones: [10, 10, 9, 8] }, | 
|  | 20 | +  { nombres: 'Juan Rodríguez', fechaNacimiento: '2002-04-05', calificaciones: [7, 6, 7, 8] }, | 
|  | 21 | +  { nombres: 'María López', fechaNacimiento: '2000-03-18', calificaciones: [8, 9, 10, 9] }, | 
|  | 22 | +  { nombres: 'Sofía García', fechaNacimiento: '1999-09-12', calificaciones: [9, 8, 8, 9] }, | 
|  | 23 | +  { nombres: 'Miguel Castro', fechaNacimiento: '2003-01-25', calificaciones: [6, 7, 6, 7] }, | 
|  | 24 | +  { nombres: 'Laura Fernández', fechaNacimiento: '2001-06-30', calificaciones: [10, 9, 9, 10] }, | 
|  | 25 | +  { nombres: 'Andrés Martínez', fechaNacimiento: '2002-02-14', calificaciones: [8, 8, 7, 8] } | 
|  | 26 | +] | 
|  | 27 | + | 
|  | 28 | +const obtenerPromedio = (estudiante) => { | 
|  | 29 | +  const { nombres, calificaciones } = estudiante | 
|  | 30 | +  const promedio = calificaciones.reduce((acumulador, nota) => acumulador + nota / calificaciones.length, 0) | 
|  | 31 | +  return { | 
|  | 32 | +    nombres, | 
|  | 33 | +    promedio | 
|  | 34 | +  } | 
|  | 35 | +} | 
|  | 36 | + | 
|  | 37 | +const mejoresEstudiantes = (estudiante) => { | 
|  | 38 | +  const { nombres, promedio } = estudiante | 
|  | 39 | +  if (promedio >= 9) { | 
|  | 40 | +    return { nombres } | 
|  | 41 | +  } | 
|  | 42 | +} | 
|  | 43 | + | 
|  | 44 | +const ordenarFechaNacimiento = (estudianteA, estudianteB) => { | 
|  | 45 | +  return new Date(estudianteB.fechaNacimiento) - new Date(estudianteA.fechaNacimiento) | 
|  | 46 | +} | 
|  | 47 | + | 
|  | 48 | +const calificacionMasAlta = (estudiante) => { | 
|  | 49 | +  const { nombres, calificaciones } = estudiante | 
|  | 50 | +  const calificacionAlta = Math.max(...calificaciones) | 
|  | 51 | +  return { | 
|  | 52 | +    nombres, | 
|  | 53 | +    calificacionAlta | 
|  | 54 | +  } | 
|  | 55 | +} | 
|  | 56 | + | 
|  | 57 | +const promedios = estudiantes.map(obtenerPromedio) | 
|  | 58 | +console.log(promedios) | 
|  | 59 | + | 
|  | 60 | +const mejoresNotas = promedios.filter(mejoresEstudiantes) | 
|  | 61 | +console.log(mejoresNotas) | 
|  | 62 | + | 
|  | 63 | +const estudiantesPorFechaNacimiento = estudiantes.sort(ordenarFechaNacimiento) | 
|  | 64 | +console.log(estudiantesPorFechaNacimiento) | 
|  | 65 | + | 
|  | 66 | +const calificacionMasAltaPorEstudiante = estudiantes.map(calificacionMasAlta) | 
|  | 67 | +console.log(calificacionMasAltaPorEstudiante) | 
0 commit comments