twenty / packages /twenty-shared /src /utils /fromArrayToValuesByKeyRecord.util.ts
Jules
Initial clean CRM deployment with prebuilt assets
d9494a5
Raw
History Blame Contribute Delete
660 Bytes
import { type StringPropertyKeys } from '@/utils/trim-and-remove-duplicated-whitespaces-from-object-string-properties';
import { isDefined } from '@/utils/validation';
export const fromArrayToValuesByKeyRecord = <T extends object>({
array,
key,
}: {
array: T[];
key: StringPropertyKeys<T>;
}) => {
return array.reduce<Record<string, T[]>>((acc, value) => {
const computedKey = value[key] as string;
const occurrence = acc[computedKey];
if (isDefined(occurrence)) {
return {
...acc,
[computedKey]: [...occurrence, value],
};
}
return {
...acc,
[computedKey]: [value],
};
}, {});
};