groupBy
Reparte cada elemento en un Map<K, List<A>> según una clave calculada.
Lección
groupBy es un operador terminal que tira de todo el
pipeline y coloca cada valor en una cubeta, identificada por lo que
f devuelva para él. Todos los elementos se conservan: no se
descarta ninguno, a diferencia de
filter; simplemente se
reorganizan en cubetas.
La versión de FxTS devuelve un objeto JS normal; como Dart no tiene
literales de objeto anónimos con claves calculadas arbitrarias, FxDart
devuelve en su lugar un Map<K, List<A>>: una de las
conversiones estándar de objeto TS a Map de Dart que se usan en toda esta sección
(indexBy y
countBy hacen lo mismo).
El orden importa dentro de cada cubeta: los elementos caen en cada lista en el mismo
orden relativo en que aparecían en la fuente. Y como es un terminal,
esto funciona exactamente igual tanto si aguas arriba hay una lista simple
como una cadena de pasos perezosos map/filter: solo
pagas el coste una vez, cuando groupBy tira de ella.
Demo 1 · Fundamentos
Demo 2 · Asíncrono
Pruébalo tú
Ejercicio: agrupa las palabras por su longitud.