From ea6fdbaaf2a57a9162bce2613d29f834a7c3da6d Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Tue, 12 Sep 2017 15:47:57 -0400 Subject: [PATCH] Adds groupBy function --- src/system/array.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/system/array.ts b/src/system/array.ts index 8ceb1db..8a7695f 100644 --- a/src/system/array.ts +++ b/src/system/array.ts @@ -1,6 +1,15 @@ 'use strict'; export namespace Arrays { + export function groupBy(array: T[], accessor: (item: T) => any): T[] { + return array.reduce((previous, current) => { + const value = accessor(current); + previous[value] = previous[value] || []; + previous[value].push(current); + return previous; + }, Object.create(null)); + } + export function uniqueBy(array: T[], accessor: (item: T) => any, predicate?: (item: T) => boolean): T[] { const uniqueValues = Object.create(null); return array.filter(_ => {