groupBy<TObj, TKey> function
List<GroupByX<TObj, TKey> >
groupBy<TObj, TKey>(
- Iterable<
TObj> seq, { - dynamic by(
- TObj x
- Comparator? matchWith = null,
- dynamic valuesAs(
- dynamic x
Implementation
List<GroupByX<TObj, TKey>> groupBy<TObj, TKey>(Iterable<TObj> seq, {by(TObj x)?: null, Comparator? matchWith: null, valuesAs(x)?: null}) {
var map = Map<TKey?, GroupByX<TObj, TKey>>();
seq.forEach((x) {
var val = by!(x);
var key = matchWith != null //
? map.keys.firstWhere((k) => matchWith(val, k) == 0, orElse: () => val)
: val;
if (!map.containsKey(key)) map[key] = GroupByX<TObj, TKey>(val);
if (valuesAs != null) x = valuesAs(x);
map[key]!.add(x);
});
return map.values.toList();
}