JavaScript de Cero a Experto / Proyectos + retos
Reto de entrevista: agrupar por propiedad (groupBy)
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
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.
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
obtenerClavees 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.