groupBy<S> method

Map<S, Iterable<T>> groupBy<S>(
  1. S f(
    1. T
    )
)

returns Map<S,Iterable

example

[1,2,3,4,5].groupBy((element)=> element % 2) // {true: [2,4],false: [1,3,5]};

Implementation

Map<S, Iterable<T>> groupBy<S>(S Function(T) f) {
  final m = <S, Iterable<T>>{};
  return fold<Map<S, Iterable<T>>>(m, (acc, element) {
    final key = f(element);
    return acc.containsKey(key)
        ? {
            ...acc,
            key: [...acc[key]!, element]
          }
        : {
            ...acc,
            key: [element]
          };
  });
}