sort()是 JavaScript 数组的一个内置方法,用于对数组的元素进行排序。它可以在多种场景下使用,以下是一些常见的使用场景:
一、数字数组排序
当你有一个数字数组,并且想要按照升序或降序排列这些数字时,可以使用 sort()
方法。
let numbers = [5, 1, 9, 3, 7];
numbers.sort(function(a, b) {
return a - b; // 升序排序
// return b - a; // 降序排序
});
console.log(numbers); // 输出: [1, 3, 5, 7, 9]
二、字符串数组排序
let fruits = ['banana', 'apple', 'cherry'];
fruits.sort();
console.log(fruits); // 输出: ['apple', 'banana', 'cherry']
三、对象数组排序
let users = [
{ name: 'zhangsan', age: 25 },
{ name: 'lisi', age: 20 },
{ name: 'wangwu', age: 23 }
];
users.sort(function(a, b) {
return a.age - b.age; // 根据年龄升序排序
});
console.log(users);
// 输出: [{ name: 'lisi', age: 20 }, { name: 'wangwu', age: 23 }, { name: 'zhangsan', age: 25 }]
四、自定义排序逻辑
sort()
方法接受一个可选的比较函数作为参数,这使得你可以定义自己的排序逻辑。
// 对下面同学的分数进行排序,当第一权重分数相同,按照第二权重分数排序
let arr = [
{
name: 'Tom',
first: 99,
second: 88,
},
{
name: 'Jane',
first: 99,
second: 99,
},
{
name: 'Maria',
first: 100,
second: 77,
},
{
name: 'Sunny',
first: 88,
second: 100,
},
]
const compare = (x, y) => {
// 先比较第一权重分
if (x.first < y.first) {
return y.first - x.first || 1 //其实只要为正数就可以
} else if (x.first > y.first) {
return y.first - x.first || -1
} else {
// 第一权重分相等的时候
if (x.second < y.second) {
return 1
} else if (x.second > y.second) {
return -1
}
}
}
arr.sort(compare);
console.log(arr);
/*
[
{ name: 'Maria', first: 100, second: 77 },
{ name: 'Jane', first: 99, second: 99 },
{ name: 'Tom', first: 99, second: 88 },
{ name: 'Sunny', first: 88, second: 100 }
]
注意:first相同的时候 second的顺序
*/