js实现列表排序
使用 Array.prototype.sort()
JavaScript 数组的 sort() 方法默认按 Unicode 码点排序,可能不符合数值或自定义排序需求。需传入比较函数实现定制排序。
const numbers = [3, 1, 4, 1, 5];
numbers.sort((a, b) => a - b); // 升序 [1, 1, 3, 4, 5]
numbers.sort((a, b) => b - a); // 降序 [5, 4, 3, 1, 1]
对象数组按属性排序
对于对象数组,可通过比较函数指定属性排序:
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 }
];
users.sort((a, b) => a.age - b.age); // 按 age 升序
字符串排序
字符串排序需考虑大小写或本地化规则:
const fruits = ['Banana', 'apple', 'Cherry'];
fruits.sort((a, b) => a.localeCompare(b)); // 忽略大小写排序
稳定排序实现
ES2019 后 sort() 已稳定,但如需兼容旧环境可手动实现稳定排序:
function stableSort(array, compare) {
const indexed = array.map((v, i) => [v, i]);
indexed.sort((a, b) => compare(a[0], b[0]) || a[1] - b[1]);
return indexed.map(v => v[0]);
}
按多条件排序
通过组合比较条件实现多级排序:
const data = [
{ name: 'Alice', age: 25, score: 80 },
{ name: 'Bob', age: 25, score: 90 }
];
data.sort((a, b) =>
a.age - b.age || b.score - a.score
); // 先按 age 升序,再按 score 降序






