Objetivo: Practicar filter() y map() con arrays de objetos.
Enunciado: Dado un array de objetos {nombre, edad, nota}, crea una función que devuelva los nombres de los estudiantes mayores de 18 años con nota ≥ 5, transformados a mayúsculas.
Conceptos clave:filter, map, funciones flecha, acceso a propiedades.
Ejercicio 6: Agrupación y estadísticas con reduce¶
Objetivo: Dominar reduce para agrupar y transformar.
Enunciado: Dado {categoria: string, articulos: [{nombre, precio}]}, usa .reduce() para agrupar por categoría, luego .map() para obtener el precio medio por categoría y .filter() para quedarte solo con las categorías cuya media supere 50€.
Crea la clase Producto y la clase Tienda que gestiona un array de productos.
La tienda debe tener métodos funcionales: aplicarDescuento(cantidad, porcentaje), obtenerVendidosFiltrados(), generarInforme().
El informe debe devolver: lista de productos con descuento aplicado, total de stock, y nombre del producto más vendido (simulado con un campo vendidos).
Conceptos clave: diseño orientado a objetos, funciones puras vs. efecto lateral, pipelines, documentación mínima.
Nivel: ★★★★
Resultado: Código modular + ejemplos de uso + salida por consola documentada.