Group array of objects by property in Typescript
Thursday, May 22, 2025Here's a very useful function for grouping an array of objects by property in Typescript!
/**
* Group array of objects by property
*/
export function groupBy<T, K extends keyof T>(
objectArray: T[],
property: K
): Record<string, T[]> {
return objectArray.reduce((acc, obj) => {
const key = String(obj[property]);
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(obj);
return acc;
}, {} as Record<string, T[]>);
}
Example:
const arr = [
{ cat: "shoes", name: "flip flop", size: 40 },
{ cat: "shoes", name: "sneakers", size: 45 },
{ cat: "shirt", name: "short sleeve", size: 12 },
];
const grouped = groupBy(arr, "cat");
Output:
{
"shoes": [
{
"cat": "shoes",
"name": "flip flop",
"size": 40
},
{
"cat": "shoes",
"name": "sneakers",
"size": 45
}
],
"shirt": [
{
"cat": "shirt",
"name": "short sleeve",
"size": 12
}
]
}