sortBy
根据指定的键或函数对数组进行排序
排序选项
排序结果
| 姓名 | 年龄 | 分数 |
|---|---|---|
| Bob | 20 | 78 |
| Charlie | 25 | 85 |
| David | 28 | 88 |
| Alice | 30 | 92 |
函数签名
typescript
function sortBy<T>(
array: T[],
keyOrFn: keyof T | ((item: T) => any),
order?: 'asc' | 'desc'
): T[]参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
array | T[] | 是 | 要排序的数组 |
keyOrFn | keyof T | ((item: T) => any) | 是 | 排序的键名或返回排序值的函数 |
order | 'asc' | 'desc' | 否 | 排序顺序,默认为 'asc' |
返回值
| 类型 | 说明 |
|---|---|
T[] | 排序后的新数组(不修改原数组) |
工作原理
- 创建原数组的副本
- 根据提供的键名或函数获取排序值
- 使用比较函数进行排序
- 返回排序后的新数组
使用示例
按属性排序
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' }]