js实现降序
数组降序排序
使用 sort() 方法结合比较函数实现数组降序排列。比较函数返回负值、零或正值,决定元素的排序顺序。
const arr = [5, 2, 8, 1, 4];
arr.sort((a, b) => b - a);
console.log(arr); // 输出: [8, 5, 4, 2, 1]
对象数组按属性降序
对对象数组按特定属性降序排列时,需在比较函数中访问对象属性。
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 20 }
];
users.sort((a, b) => b.age - a.age);
console.log(users);
// 输出: [{name:'Bob',age:30}, {name:'Alice',age:25}, {name:'Charlie',age:20}]
字符串数组降序
字符串排序需使用 localeCompare() 方法,通过返回值调整顺序。
const fruits = ['banana', 'apple', 'orange', 'grape'];
fruits.sort((a, b) => b.localeCompare(a));
console.log(fruits); // 输出: ['orange', 'grape', 'banana', 'apple']
降序排序的稳定性问题
ES2019 后 sort() 是稳定排序,但需注意浏览器兼容性。稳定排序指相等元素保持原始相对顺序。
const data = [
{ value: 'a', order: 1 },
{ value: 'b', order: 1 },
{ value: 'c', order: 2 }
];
// 按order降序且保持同值元素原始顺序
data.sort((x, y) => y.order - x.order);
大数组优化
对于大型数组,考虑使用 TypedArray 或 Web Worker 提高性能。

// 使用Int32Array处理大型数值数组
const largeArr = new Int32Array([5000, 2000, 8000]);
largeArr.sort((a, b) => b - a);






