js实现升序降序
数组排序(升序/降序)
在JavaScript中,数组排序可以通过Array.prototype.sort()方法实现。默认情况下,sort()方法将元素转换为字符串并按Unicode码点升序排列。但可通过自定义比较函数实现数字或对象的升序/降序。
升序排序
对数字数组升序排序需提供比较函数,确保数值正确比较:
const numbers = [3, 1, 4, 1, 5, 9];
numbers.sort((a, b) => a - b);
console.log(numbers); // 输出: [1, 1, 3, 4, 5, 9]
降序排序
将比较函数的逻辑反转即可实现降序:
const numbers = [3, 1, 4, 1, 5, 9];
numbers.sort((a, b) => b - a);
console.log(numbers); // 输出: [9, 5, 4, 3, 1, 1]
对象数组排序
若数组元素为对象,需根据对象的某个属性排序:
按属性升序
const users = [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 21 },
{ name: "Charlie", age: 23 }
];
users.sort((a, b) => a.age - b.age);
console.log(users); // 按age升序排列
按属性降序
users.sort((a, b) => b.age - a.age);
console.log(users); // 按age降序排列
字符串排序
字符串排序可直接使用默认方法或自定义逻辑:
升序(默认行为)
const fruits = ["Banana", "Orange", "Apple"];
fruits.sort(); // 默认按Unicode升序
console.log(fruits); // 输出: ["Apple", "Banana", "Orange"]
降序
通过反转比较结果实现:
fruits.sort((a, b) => b.localeCompare(a));
console.log(fruits); // 输出: ["Orange", "Banana", "Apple"]
注意事项
-
原数组修改:
sort()方法会直接修改原数组,若需保留原数组,可先拷贝:const original = [3, 1, 2]; const sorted = [...original].sort((a, b) => a - b); -
稳定性:ES2019后,
sort()为稳定排序(相同值保持原始顺序)。 -
性能:对于大型数组,考虑使用更高效的排序算法(如WebAssembly实现的快速排序)。






