Saltar al contenido
Curso de JavaScript
Todos los cursos

Ejercicio: Arrays

  • ⏱ 40 minutos
  • 📶 Nivel: principiante

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.

▶ Prueba tu código aquí (opcional)
Consola

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.

    app.js
    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).