21
*/
22
export function groupBy<K extends string | number | symbol, V>(data: readonly V[], groupFn: (element: V) => K): Partial<Record<K, V[]>> {
23
>
const result: Partial<Record<K, V[]>> = Object.create(null);
collections.ts
24
>
for (const element of data) {
25
>
const key = groupFn(element);
26
>
let target = result[key];
27
>
if (!target) {
28
>
target = result[key] = [];
29
>
}
30
>
target.push(element);
31
>
}
32
>
return result;
33
>
}
34
35
export function groupByMap<K, V>(data: V[], groupFn: (element: V) => K): Map<K, V[]> {