CodeForge

JavaScript de Cero a Experto / Proyectos + retos

Reto de entrevista: agrupar por propiedad (groupBy)

Reto20 min60 XP

Tienes una lista de gastos y los quieres organizados por categoría. O usuarios por ciudad. O productos por marca. groupBy —agrupar una colección por una clave— es tan útil que lo harás mil veces… y tan fundamental que JavaScript tardó hasta 2024 en traerlo nativo. Hoy lo construyes en cuatro líneas.

Reto

groupBy: organizar en grupos

Media15 min60 XP(×2 sin mirar la solución)

Qué debes construir

Una función agruparPor(lista, obtenerClave) que reciba un array y una función que extrae la clave de cada elemento, y devuelva un objeto donde cada clave apunta al array de los elementos que la comparten.

js
const gastos = [
  { nombre: "Bus", categoria: "transporte" },
  { nombre: "Cine", categoria: "ocio" },
  { nombre: "Taxi", categoria: "transporte" },
];
agruparPor(gastos, (g) => g.categoria);
// { transporte: [{Bus}, {Taxi}], ocio: [{Cine}] }

Reglas

  • obtenerClave es una FUNCIÓN que recibe un elemento y devuelve su clave (así agrupas por lo que sea, no solo por una propiedad fija).
  • El resultado es un objeto de arrays.
  • Pasa los tests del playground.

15:00

Cuando estés listo, arranca el reloj.

Qué sigue

Entramos en territorio de closures avanzados: memoize, una función que envuelve a otra y RECUERDA sus resultados para no recalcular. La antesala perfecta para los dos jefes finales del módulo: debounce y throttle.