实现js sort()
实现 JavaScript 的 sort() 方法
JavaScript 的 sort() 方法用于对数组元素进行排序。默认情况下,sort() 将元素转换为字符串并按 Unicode 码点顺序排序。如需自定义排序逻辑,需传入比较函数。
默认排序(按 Unicode 码点)
const fruits = ['banana', 'apple', 'orange'];
fruits.sort();
console.log(fruits); // 输出: ['apple', 'banana', 'orange']
数字排序
默认情况下,数字会被转换为字符串排序,可能导致错误结果。需传入比较函数:
const numbers = [40, 100, 1, 5];
numbers.sort((a, b) => a - b); // 升序
console.log(numbers); // 输出: [1, 5, 40, 100]
numbers.sort((a, b) => b - a); // 降序
console.log(numbers); // 输出: [100, 40, 5, 1]
对象数组排序
根据对象属性排序时,需在比较函数中指定属性:
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 30 },
{ name: 'Bob', age: 20 }
];
users.sort((a, b) => a.age - b.age); // 按年龄升序
console.log(users); // 输出: [{name: 'Bob', age: 20}, ...]
自定义排序逻辑
比较函数需返回以下值:
- 负数:
a排在b前 - 正数:
b排在a前 - 零:顺序不变
const mixed = ['Aa', 'aa', 'aA', 'AA'];
mixed.sort((a, b) => a.localeCompare(b, 'en', { sensitivity: 'base' }));
console.log(mixed); // 不区分大小写的排序
注意事项
sort()会修改原数组。- 对大型数组,考虑性能更优的排序算法(如快速排序、归并排序)。
- Unicode 排序可能对特殊字符(如
é、ñ)产生非预期结果,需使用localeCompare。







