10 lines
245 B
TypeScript
10 lines
245 B
TypeScript
|
export function groupBy<T, K extends keyof any>(arr: T[], key: (i: T) => K): Record<K, T[]> {
|
||
|
return arr.reduce(
|
||
|
(groups, item) => {
|
||
|
(groups[key(item)] ||= []).push(item);
|
||
|
return groups;
|
||
|
},
|
||
|
{} as Record<K, T[]>,
|
||
|
);
|
||
|
}
|