Skip to content

sortBy

根据指定的键或函数对数组进行排序

排序选项

排序结果

姓名年龄分数
Bob2078
Charlie2585
David2888
Alice3092

函数签名

typescript
function sortBy<T>(
  array: T[],
  keyOrFn: keyof T | ((item: T) => any),
  order?: 'asc' | 'desc'
): T[]

参数

参数名类型必填说明
arrayT[]要排序的数组
keyOrFnkeyof T | ((item: T) => any)排序的键名或返回排序值的函数
order'asc' | 'desc'排序顺序,默认为 'asc'

返回值

类型说明
T[]排序后的新数组(不修改原数组)

工作原理

  1. 创建原数组的副本
  2. 根据提供的键名或函数获取排序值
  3. 使用比较函数进行排序
  4. 返回排序后的新数组

使用示例

按属性排序

typescript
const users = [
  { name: 'Charlie', age: 25 },
  { name: 'Alice', age: 30 },
  { name: 'Bob', age: 20 }
]

// 按年龄升序
sortBy(users, 'age')
// [{ name: 'Bob', age: 20 }, { name: 'Charlie', age: 25 }, { name: 'Alice', age: 30 }]

// 按年龄降序
sortBy(users, 'age', 'desc')
// [{ name: 'Alice', age: 30 }, { name: 'Charlie', age: 25 }, { name: 'Bob', age: 20 }]

按函数排序

typescript
const users = [
  { name: 'Charlie' },
  { name: 'Alice' },
  { name: 'Bob' }
]

// 按名字长度排序
sortBy(users, user => user.name.length)
// [{ name: 'Bob' }, { name: 'Alice' }, { name: 'Charlie' }]