diff --git a/frontend/bidsoup/src/app/utils/sorting.ts b/frontend/bidsoup/src/app/utils/sorting.ts index 28b4ed51..fa435141 100644 --- a/frontend/bidsoup/src/app/utils/sorting.ts +++ b/frontend/bidsoup/src/app/utils/sorting.ts @@ -1,12 +1,9 @@ -// tslint:disable-next-line:no-any -export const array2HashByKey = (arr: any[], key: any) => { - return arr.reduce( - (ordered, el) => ({ - ...ordered, - [el[key]]: ordered[el[key]] - ? [...ordered[el[key]], el] - : [el] - }), - {} - ); -}; +export const array2HashByKey = , K extends keyof T>(arr: T[], key: K) => ( + arr.reduce( + (hash, el) => ( + el[key] in hash + ? Object.assign(hash, {[el[key]]: [el, ...hash[el[key]]]}) + : Object.assign(hash, {[el[key]]: el}) + ), + {} as {[k in T[K]]: T[]} + ));