Skip to content

orderBy

根据给定的 criteria 和对应的排序方向对一个对象数组进行排序。

  • 如果提供的是键,它会根据这些键的值对对象进行排序。
  • 如果提供的是函数,它会根据这些函数返回的值进行排序。

该函数返回按相应排序方向排列的对象数组。 如果两个对象在当前条件下具有相同的值,它将使用下一个条件来确定它们的顺序。

如果排序方向的数量少于条件的数量,则对剩余的条件使用最后一个排序方向。

签名

typescript
function orderBy<T extends object>(
  arr: T[],
  criteria: Array<((item: T) => unknown) | keyof T>,
  orders: Array<'asc' | 'desc'>
): T[];

参数

  • arr (T[]): 要排序的对象数组。
  • criteria (Array<keyof T | ((item: T) => unknown)>): 排序的条件。其可以是对象键的数组或返回用于排序的值的函数。
  • orders (Array<'asc' | 'desc'>)): 排序方向数组('asc' 表示升序,'desc' 表示降序)。

返回值

(T[]) 排序后的数组。

示例

typescript
// 按 `user` 以升序和 `age` 以降序对对象数组进行排序。
const users = [
  { user: 'fred', age: 48 },
  { user: 'barney', age: 34 },
  { user: 'fred', age: 40 },
  { user: 'barney', age: 36 },
];

const result = orderBy(users, [obj => obj.user, 'age'], ['asc', 'desc']);
// result 将会是:
// [
//   { user: 'barney', age: 36 },
//   { user: 'barney', age: 34 },
//   { user: 'fred', age: 48 },
//   { user: 'fred', age: 40 },
// ]