groupedBy
Grupos como registros (key, items) encadenables — agrega por grupo sin salir del pipeline.
Lección
groupBy es un terminal: te
entrega un Map, y en cuanto quieres «total por grupo,
ordenado, top 3» estás reentrando al pipeline por
fx(map.entries), con toda la ceremonia de
kv.key / kv.value. groupedBy es
el mismo agrupamiento como vista encadenable: cada
grupo es un registro con nombre
(key: …, items: …), así que la agregación por
grupo, el orden y el take continúan en la misma cadena — y el código
aguas abajo lee g.key / g.items en vez de los
posicionales $1 / $2.
Los grupos aparecen en orden de primera aparición de la
clave, exactamente como itera el mapa de groupBy.
Igual que sortBy, tiene que ver
todos los valores antes de poder producir el primer grupo, así que el
agrupamiento en sí es ansioso mientras la cadena a su alrededor sigue
siendo componible.
Es una adición nativa de Dart (sin contraparte en FxTS) — usa
groupBy cuando quieras búsquedas por clave, y
groupedBy cuando los grupos sean solo un paso intermedio
de un pipeline más largo.
Demo 1 · Agrupar → agregar → rankear, una cadena
Demo 2 · Async
Pruébalo tú
Ejercicio: la categoría con más gasto sin tocar Map.entries.
groupBy — el mismo agrupamiento como Map con claves ·
countBy — cuando el único agregado es un conteo ·
sortByDesc — el siguiente paso natural de un ranking