实现js数组排序
数组排序方法
JavaScript提供了多种数组排序方法,可以根据不同需求选择合适的排序方式。
使用sort()方法
默认的sort()方法将元素转换为字符串后按Unicode码点排序:

const fruits = ['banana', 'apple', 'orange'];
fruits.sort(); // ['apple', 'banana', 'orange']
对于数字排序需要自定义比较函数:
const numbers = [40, 100, 1, 5];
numbers.sort((a, b) => a - b); // 升序 [1, 5, 40, 100]
numbers.sort((a, b) => b - a); // 降序 [100, 40, 5, 1]
对象数组排序
可以根据对象属性进行排序:

const items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 }
];
items.sort((a, b) => a.value - b.value); // 按value升序
items.sort((a, b) => a.name.localeCompare(b.name)); // 按name字母顺序
实现稳定排序
ES2019后sort()已经是稳定排序,对于相同值的元素会保持原始顺序:
const data = [
{ name: 'A', order: 1 },
{ name: 'B', order: 1 } // 相同order值会保持原始顺序
];
data.sort((a, b) => a.order - b.order);
自定义排序算法
可以实现常见排序算法如快速排序:
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)];
}
性能考虑
对于大型数组,内置sort()方法通常比自定义实现更快,因为它是用底层语言优化的。V8引擎使用TimSort算法,时间复杂度为O(n log n)。






