es6 排序
在ES6中,排序可以通过多种方式实现,最常见的是使用Array.prototype.sort()
方法。该方法可以对数组元素进行原地排序,并返回排序后的数组。对于简单的升序或降序排列,可以直接使用默认的排序方法;而对于复杂的数据类型(如对象数组),则需要提供一个比较函数来定义排序逻辑。
基本字符串和数字排序
我们来看如何对基本的字符串和数字数组进行排序。
javascript
// 字符串数组排序
let fruits = ['banana', 'apple', 'cherry'];
fruits.sort(); // 默认按照字母顺序排序
console.log(fruits); // 输出: ['apple', 'banana', 'cherry']</p>
<p>// 数字数组排序
let numbers = [4, 1, 5, 3, 2];
numbers.sort((a, b) => a - b); // 升序排序
console.log(numbers); // 输出: [1, 2, 3, 4, 5]</p>
<p>numbers.sort((a, b) => b - a); // 降序排序
console.log(numbers); // 输出: [5, 4, 3, 2, 1]
对象数组排序
当需要对包含对象的数组进行排序时,必须提供一个比较函数。例如,如果我们有一个学生数组,想要根据他们的年龄进行排序:
javascript
let students = [
{ name: 'Alice', age: 21 },
{ name: 'Bob', age: 19 },
{ name: 'Charlie', age: 20 }
];</p>
<p>students.sort((a, b) => a.age - b.age); // 按年龄升序排序
console.log(students);
// 输出:
// [
// { name: 'Bob', age: 19 },
// { name: 'Charlie', age: 20 },
// { name: 'Alice', age: 21 }
// ]
如果要按名字的字母顺序排序,可以这样写:
javascript
students.sort((a, b) => a.name.localeCompare(b.name)); // 按名字升序排序
console.log(students);
多字段排序
有时候我们需要基于多个字段进行排序。比如先按年龄排序,如果年龄相同,则按名字排序:
javascript
students.sort((a, b) => {
if (a.age === b.age) {
return a.name.localeCompare(b.name);
} else {
return a.age - b.age;
}
});
console.log(students);
以上就是几种使用ES6进行排序的方法。通过这些示例,我们可以看到sort()
方法的强大和灵活性。无论是简单的数字、字符串排序还是复杂的对象数组排序,都可以通过适当的比较函数轻松实现。