跳到主要内容

sortBy()

function sortBy(key): (a, b) => -1 | 0 | 1;

Defined in: array/sortBy.ts:36

创建一个按指定对象属性排序的比较函数,用于数组排序 按属性值的自然顺序进行升序排序,支持字符串、数字等基本类型比较 生成的比较函数兼容Array.sort()方法,会修改原数组

Parameters

ParameterTypeDescription
keystring用于排序的对象属性名,必须是T的有效属性

Returns

比较函数,返回值:

  • 正数:a应排在b后面
  • 负数:a应排在b前面
  • 0:a和b位置不变
(a, b): -1 | 0 | 1;

Parameters

ParameterType
aRecord<string, any>
bRecord<string, any>

Returns

-1 | 0 | 1

Examples

const data = [
{ name: 'Bob', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Charlie', age: 35 }
];
// 按age升序排序
data.sort(sortBy('age')); // 结果: Alice(25), Bob(30), Charlie(35)
// 按name字母顺序排序(区分大小写)
data.sort(sortBy('name')); // 结果: Alice, Bob, Charlie
// 数字字符串会按字典序而非数值排序
const items = [{ id: '10' }, { id: '2' }, { id: '1' }];
items.sort(sortBy('id')); // 结果: [{id: '1'}, {id: '10'}, {id: '2'}]
// 处理包含null/undefined的属性值
const mixed = [{ score: 90 }, { score: null }, { score: 85 }];
mixed.sort(sortBy('score')); // null值排在最后
**Note:** 字符串比较区分大小写,'Z'会排在'a'前面
**Note:** 不支持对象类型的属性值比较,复杂类型需先转换为基本类型
**Note:** 排序是原地(in-place)进行的,会修改原始数组
**Note:** 当属性不存在于对象中时,该对象会被视为值为undefined