(
array: T[],
getKey: (item: T) => R // return key
)
| 1055 | * Group a list by key. |
| 1056 | */ |
| 1057 | export function groupData<T, R extends string | number>( |
| 1058 | array: T[], |
| 1059 | getKey: (item: T) => R // return key |
| 1060 | ): { |
| 1061 | keys: R[], |
| 1062 | buckets: HashMap<T[], R> // hasmap key: the key returned by `getKey`. |
| 1063 | } { |
| 1064 | const buckets = createHashMap<T[], R>(); |
| 1065 | const keys: R[] = []; |
| 1066 | |
| 1067 | each(array, function (item) { |
| 1068 | const key = getKey(item); |
| 1069 | (buckets.get(key) |
| 1070 | || (keys.push(key), buckets.set(key, [])) |
| 1071 | ).push(item); |
| 1072 | }); |
| 1073 | |
| 1074 | return { |
| 1075 | keys: keys, |
| 1076 | buckets: buckets |
| 1077 | }; |
| 1078 | } |
| 1079 | |
| 1080 | |
| 1081 | /** |
no test coverage detected
searching dependent graphs…