Ejercicio: Arrays
Objetivo
Procesar listas de números, personas y productos con map, filter, reduce y sort, sin modificar los datos originales.
Antes de empezar
Estas funciones no necesitan una página. Prueba con console.log en el editor y pega tu código en el comprobador.
Pasos
Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.
💡 Pista 1: `masCaro`
Si el array está vacío devuelve null. Si no, usa reduce para quedarte con el producto de mayor precio y devuelve su nombre.
💡 Pista 2: no modificar el original
sort modifica el array. Haz primero una copia: [...productos].sort((a, b) => a.precio - b.precio).
🔎 Comprueba tu trabajo
Pega tu código y pulsa Comprobar. La revisión ocurre en tu navegador; nada se envía a ningún sitio. Cada punto en rojo incluye una pista.
✅ Ver una solución de ejemplo
Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.
const dobles = (numeros) => numeros.map((n) => n * 2);
const pares = (numeros) => numeros.filter((n) => n % 2 === 0);
const suma = (numeros) => numeros.reduce((total, n) => total + n, 0);
const nombres = (personas) => personas.map((p) => p.nombre);
const mayoresDeEdad = (personas) => personas.filter((p) => p.edad >= 18);
function masCaro(productos) {
if (productos.length === 0) return null;
const mayor = productos.reduce((a, b) => (b.precio > a.precio ? b : a));
return mayor.nombre;
}
function ordenarPorPrecio(productos) {
return [...productos].sort((a, b) => a.precio - b.precio);
}
function sinRepetidos(lista) {
return [...new Set(lista)];
}
💡 🏁 Reto extra (opcional)
Escribe agruparPorCategoria(productos) que reciba productos { nombre, categoria } y devuelva un objeto con las categorías como claves y arrays de nombres como valores (con reduce).