js 实现sort
实现 JavaScript 的 sort 方法
JavaScript 的 Array.prototype.sort 方法用于对数组元素进行排序。默认情况下,它将元素转换为字符串并按 Unicode 码点顺序排序。为了更灵活地排序,可以传入一个比较函数。
基本用法
默认排序(按 Unicode 码点顺序):
const fruits = ['banana', 'apple', 'orange'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'orange']
自定义比较函数
比较函数接收两个参数 a 和 b,返回值的规则如下:
- 返回负数:
a排在b前面 - 返回正数:
b排在a前面 - 返回 0:顺序不变
升序排列数字:
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 items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 }
];
items.sort((a, b) => a.value - b.value);
console.log(items);
// [
// { name: 'Edward', value: 21 },
// { name: 'Sharpe', value: 37 },
// { name: 'And', value: 45 }
// ]
字符串排序
不区分大小写排序:
const names = ['Fred', 'alice', 'Bob', 'Eve'];
names.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
console.log(names); // ['alice', 'Bob', 'Eve', 'Fred']
稳定性
现代 JavaScript 引擎实现的 sort 是稳定的排序算法,即相等元素的相对顺序在排序前后保持不变。

性能注意事项
排序性能取决于具体实现,不同浏览器/环境可能使用不同的排序算法(如快速排序、归并排序等)。对于大型数组,自定义比较函数的效率会影响整体排序速度。






