实现排序 js
数组排序方法
JavaScript 提供内置的 sort() 方法对数组排序。默认按字符串 Unicode 码点排序,需自定义比较函数处理数字或其他规则。
升序排列数字数组
const numbers = [3, 1, 4, 2];
numbers.sort((a, b) => a - b); // 输出 [1, 2, 3, 4]
降序排列数字数组
numbers.sort((a, b) => b - a); // 输出 [4, 3, 2, 1]
对象数组按属性排序
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 20 }
];
users.sort((a, b) => a.age - b.age); // 按 age 升序排列
稳定排序实现
现代浏览器(如 Chrome、Firefox)的 sort() 已实现稳定排序(相同值保持原始顺序)。若需兼容旧环境,可通过索引辅助实现:
const data = ['apple', 'banana', 'Apple'];
data.map((item, index) => ({ item, index }))
.sort((a, b) => a.item.localeCompare(b.item) || a.index - b.index)
.map(({ item }) => item);
自定义排序算法示例
快速排序实现
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[0];
const left = [], 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()方法会修改原数组,需用[...arr].sort()避免副作用。- 对中文排序需使用
localeCompare:['中', '国', '人'].sort((a, b) => a.localeCompare(b, 'zh'));







