js实现列表排序
数组排序方法
JavaScript 提供了 Array.prototype.sort() 方法用于对数组元素进行排序。默认情况下,该方法将元素转换为字符串并按照 Unicode 码点顺序排序。
const fruits = ['banana', 'apple', 'orange', 'grape'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'grape', 'orange']
数字排序
对于数字数组,直接使用 sort() 会得到错误结果,需要自定义比较函数:

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: 'Bob', age: 20 }
];
// 按年龄升序
users.sort((a, b) => a.age - b.age);
console.log(users);
// [{name: 'Bob', age: 20}, {name: 'John', age: 25}, {name: 'Jane', age: 30}]
// 按名字字母顺序
users.sort((a, b) => a.name.localeCompare(b.name));
console.log(users);
// [{name: 'Bob', age: 20}, {name: 'Jane', age: 30}, {name: 'John', age: 25}]
稳定排序
ES2019 规定 sort() 必须是稳定排序(相同元素保持原始顺序)。对于需要稳定排序的复杂场景:

const items = [
{ name: 'item1', priority: 1 },
{ name: 'item2', priority: 2 },
{ name: 'item3', priority: 1 }
];
// 按优先级排序(稳定)
items.sort((a, b) => a.priority - b.priority);
console.log(items);
// [
// {name: 'item1', priority: 1},
// {name: 'item3', priority: 1},
// {name: 'item2', priority: 2}
// ]
性能优化
对于大型数组,考虑使用 TypedArray 或 Web Worker 进行优化:
// 使用 Int32Array 处理大量数字
const largeArray = new Int32Array([...]);
largeArray.sort((a, b) => a - b);
自定义排序算法
如果需要实现特定排序算法(如快速排序):
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[0];
const left = [];
const right = [];
for (let i = 1; i < arr.length; i++) {
arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
}
return [...quickSort(left), pivot, ...quickSort(right)];
}
console.log(quickSort([3, 1, 4, 2])); // [1, 2, 3, 4]






