实现js sort
实现 JavaScript 的 sort 方法
JavaScript 的 sort 方法用于对数组元素进行排序。默认情况下,sort 方法将元素转换为字符串并按 Unicode 码点排序。为了实现更复杂的排序逻辑,可以传递一个比较函数作为参数。
基本用法
默认排序(按 Unicode 码点排序):
const fruits = ['banana', 'apple', 'orange'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'orange']
自定义比较函数
比较函数接收两个参数(通常称为 a 和 b),并返回以下值:
- 负数:
a应排在b前面。 - 正数:
b应排在a前面。 - 零:顺序不变。
按数字升序排序:
const numbers = [40, 100, 1, 5, 25];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 5, 25, 40, 100]
按数字降序排序:
numbers.sort((a, b) => b - a);
console.log(numbers); // [100, 40, 25, 5, 1]
对象数组排序
根据对象的某个属性排序:
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 30 },
{ name: 'Doe', age: 20 }
];
users.sort((a, b) => a.age - b.age);
console.log(users); // 按 age 升序排序
字符串排序(不区分大小写)
默认的字符串排序区分大小写。通过自定义比较函数实现不区分大小写排序:

const names = ['Alice', 'bob', 'Charlie', 'dave'];
names.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
console.log(names); // ['Alice', 'bob', 'Charlie', 'dave']
注意事项
sort方法会修改原数组。- 对于大型数组,自定义比较函数的性能可能成为瓶颈。
- 默认排序不适用于数字,可能导致意外结果(如
[1, 10, 2])。






