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

Tags

Array ManipulationGroupingType SafetyUtility Function