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(_ => {