export const groupArrayItemsBy = ( array: Item[], computeGroupKey: (item: Item) => Key, ) => array.reduce>>((result, item) => { const groupKey = computeGroupKey(item); const previousGroup = result[groupKey] || []; return { ...result, [groupKey]: [...previousGroup, item], }; }, {});