Back to Snippets
CODE
Array Grouping (Type-Safe Version)
Description
Lightweight and type-safe alternative to lodash.groupBy, groups array elements by specified rules and returns structured grouping object
Code
/**
* Array grouping function
* @param arr Array to be grouped
* @param keyFn Function to generate grouping key
* @returns Grouped object
*/
function groupArray<T>(arr: T[], keyFn: (item: T) => string | number): Record<string | number, T[]> {
return arr.reduce((acc, item) => {
const key = keyFn(item);
if (!acc[key]) acc[key] = [];
acc[key].push(item);
return acc;
}, {} as Record<string | number, T[]>);
}
// Usage Example
const data = [
{ type: "js", name: "Basic Syntax" },
{ type: "ts", name: "Type Definition" },
{ type: "js", name: "Asynchronous Programming" }
];
const grouped = groupArray(data, item => item.type);
console.log(grouped);
// { js: [{type: 'js', name: 'Basic Syntax'}, {type: 'js', name: 'Asynchronous Programming'}], ts: [{type: 'ts', name: 'Type Definition'}] }Usage
Ideal for categorizing list data, organizing API responses, or creating grouped UI components