UNPKG

es-toolkit

Version:

A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.

36 lines (34 loc) 1.31 kB
/** * Sorts an array of objects based on the given `criteria`. * * - If you provide keys, it sorts the objects by the values of those keys. * - If you provide functions, it sorts based on the values returned by those functions. * * The function returns the array of objects sorted in ascending order. * If two objects have the same value for the current criterion, it uses the next criterion to determine their order. * * @template T - The type of the objects in the array. * @param {T[]} arr - The array of objects to be sorted. * @param {Array<((item: T) => unknown) | keyof T>} criteria - The criteria for sorting. This can be an array of object keys or functions that return values used for sorting. * @returns {T[]} - The sorted array. * * @example * const users = [ * { user: 'foo', age: 24 }, * { user: 'bar', age: 7 }, * { user: 'foo', age: 8 }, * { user: 'bar', age: 29 }, * ]; * * sortBy(users, ['user', 'age']); * sortBy(users, [obj => obj.user, 'age']); * // results will be: * // [ * // { user : 'bar', age: 7 }, * // { user : 'bar', age: 29 }, * // { user : 'foo', age: 8 }, * // { user : 'foo', age: 24 }, * // ] */ declare function sortBy<T extends object>(arr: readonly T[], criteria: Array<((item: T) => unknown) | keyof T>): T[]; export { sortBy };