UNPKG

hd-utils

Version:

A handy utils for modern JS developers

29 lines (27 loc) 786 B
import { GroupedObject } from '../types'; /** * @description function to categorizes an array of objects by a key or condition. It also supports optional object transformation before grouping. * @example * groupBy( [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 25 }, { name: 'David', age: 30 }, ], 'age', (person) => ({ ...person, isNew: person.age < 30 }) ) // { 25: [ { name: 'Alice', age: 25, isNew: true }, { name: 'Charlie', age: 25, isNew: true }, ], 30: [ { name: 'Bob', age: 30, isNew: false }, { name: 'David', age: 30, isNew: false }, ], }; */ export default function groupBy<T>(array: T[], keyOrCondition: string | ((item: T) => string), transform?: (item: T, key: string) => T): GroupedObject<T>;