HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/iphim.naniguide.com/common/resources/client/utils/array/group-array-by.ts
interface Options<T> {
  map?: (item: T) => T;
}

export function groupArrayBy<T>(
  arr: T[],
  cb: (item: any) => string,
  options?: Options<T>,
): {[key: string]: T[]} {
  const result: {[key: string]: T[]} = {};
  for (let i = 0; i < arr.length; i++) {
    let item = arr[i];
    const bucketCategory = cb(item);
    const bucket = result[bucketCategory];

    item = options?.map ? options.map(arr[i]) : arr[i];

    if (!Array.isArray(bucket)) {
      result[bucketCategory] = [item];
    } else {
      result[bucketCategory].push(item);
    }
  }

  return result;
}