@newdash/newdash
Version:
javascript/typescript utility library
52 lines (51 loc) • 1.74 kB
TypeScript
import { ArrayAble, Collection, CollectionIteratee, KeyIteratee } from "./types";
/**
* @ignore
*/
type FunctionOrder<T = any> = (v1: T, v2: T) => any;
/**
* @ignore
*/
type StringOrder = "asc" | "desc";
/**
* @ignore
*/
type Order<T = any> = FunctionOrder<T> | StringOrder;
/**
* This method is like `sortBy` except that it allows specifying the sort
* orders of the iteratees to sort by. If `orders` is unspecified, all values
* are sorted in ascending order. Otherwise, specify an order of "desc" for
* descending or "asc" for ascending sort order of corresponding values.
* You may also specify a compare function for an order.
*
* @since 5.10.0
* @category Collection
* @param collection The collection to iterate over.
* @param iteratees The iteratees to sort by.
* @param orders The sort orders of `iteratees`.
* @returns Array Returns the new sorted array.
* @see [[reverse]]
* @example
*
* ```js
* const users = [
* { 'user': 'fred', 'age': 48 },
* { 'user': 'barney', 'age': 34 },
* { 'user': 'fred', 'age': 40 },
* { 'user': 'barney', 'age': 36 }
* ]
*
* // Sort by `user` in ascending order and by `age` in descending order.
* orderBy(users, ['user', 'age'], ['asc', 'desc'])
* // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
*
* // Sort by `user` then by `age` using custom compare functions for each
* orderBy(users, ['user', 'age'], [
* (a, b) => a.localeCompare(b, 'de', { sensitivity: 'base' }),
* (a, b) => a - b,
* ])
* ```
*
*/
export declare function orderBy<T, T2>(collection: Collection<T>, iteratees: ArrayAble<CollectionIteratee<T, T2> | KeyIteratee>, orders: ArrayAble<Order<T2>>, guard?: any): Array<T>;
export default orderBy;