js实现升序排列
使用 Array.prototype.sort() 方法
JavaScript 数组的 sort() 方法默认将元素转换为字符串并按 Unicode 码点排序。为实现升序排列,需传入比较函数:
const arr = [5, 2, 8, 1, 4];
arr.sort((a, b) => a - b);
console.log(arr); // 输出 [1, 2, 4, 5, 8]
比较函数返回负数时,a 排在 b 前面;返回正数时,b 排在 a 前面;返回 0 则顺序不变。
对字符串数组排序
字符串数组可直接使用 sort() 方法按字典序升序排列:
const strArr = ['banana', 'apple', 'cherry'];
strArr.sort();
console.log(strArr); // 输出 ['apple', 'banana', 'cherry']
如需忽略大小写排序:
const mixedCaseArr = ['Banana', 'apple', 'Cherry'];
mixedCaseArr.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
console.log(mixedCaseArr); // 输出 ['apple', 'Banana', 'Cherry']
对对象数组按属性排序
通过比较函数指定对象属性实现升序:
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 20 },
{ name: 'Doe', age: 22 }
];
users.sort((a, b) => a.age - b.age);
console.log(users);
// 输出: [{name:'Jane', age:20}, {name:'Doe', age:22}, {name:'John', age:25}]
稳定排序的实现
ES2019 后 sort() 已稳定,但如需兼容旧环境,可通过索引保持稳定性:
const data = [
{ value: 2, index: 0 },
{ value: 1, index: 1 },
{ value: 2, index: 2 }
];
data.sort((a, b) => (a.value - b.value) || (a.index - b.index));
console.log(data); // 相同 value 的元素保持原始顺序
性能优化建议
大规模数据排序时,考虑以下优化:
- 避免在比较函数中创建新对象
- 对于固定排序规则,可预先计算排序键
- 超过 10^5 个元素时,推荐使用 TypedArray 或 Web Worker
// 使用 TypedArray 加速
const largeArray = new Int32Array([50000, 20000, 80000]);
largeArray.sort((a, b) => a - b);






