summaryrefslogtreecommitdiff
path: root/src/prelude/array.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/prelude/array.ts')
-rw-r--r--src/prelude/array.ts13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/prelude/array.ts b/src/prelude/array.ts
index 839bbc920b..f4d684d574 100644
--- a/src/prelude/array.ts
+++ b/src/prelude/array.ts
@@ -84,6 +84,19 @@ export function groupOn<T, S>(f: (x: T) => S, xs: T[]): T[][] {
return groupBy((a, b) => f(a) === f(b), xs);
}
+export function groupByX<T>(collections: T[], keySelector: (x: T) => string) {
+ return collections.reduce((obj: Record<string, T[]>, item: T) => {
+ const key = keySelector(item);
+ if (!obj.hasOwnProperty(key)) {
+ obj[key] = [];
+ }
+
+ obj[key].push(item);
+
+ return obj;
+ }, {});
+}
+
/**
* Compare two arrays by lexicographical order
*/