📅  最后修改于: 2023-12-03 15:08:39.204000             🧑  作者: Mango
在 JavaScript 中,可以通过调用 sort()
方法来对集合进行排序。sort()
方法原生支持对包含字符串或数字的集合进行排序,但需要手动实现比较函数以对对象集合进行排序。
对数字从小到大排序:
const numArr = [3, 1, 10, 5, 8];
numArr.sort(function(a, b) {
return a - b;
});
console.log(numArr); // [1, 3, 5, 8, 10]
对数字从大到小排序:
const numArr = [3, 1, 10, 5, 8];
numArr.sort(function(a, b) {
return b - a;
});
console.log(numArr); // [10, 8, 5, 3, 1]
对字符串进行排序时,默认按字母顺序进行排序:
const strArr = ["apple", "banana", "orange", "pear"];
strArr.sort();
console.log(strArr); // ["apple", "banana", "orange", "pear"]
如果需要按字符串长度进行排序,则需要手动给 sort()
方法传递一个自定义比较函数:
const strArr = ["apple", "banana", "orange", "pear"];
strArr.sort(function(a, b) {
return a.length - b.length;
});
console.log(strArr); // ["pear", "apple", "banana", "orange"]
对对象进行排序时,需要通过自定义比较函数来实现。比较函数需要返回一个负数/零/正数,指示两个对象的相对顺序。
例如,假设我们有以下对象集合:
const personArr = [
{ name: "John", age: 30 },
{ name: "Bob", age: 20 },
{ name: "Alice", age: 25 }
];
将该集合按照年龄从小到大排序:
personArr.sort(function(a, b) {
return a.age - b.age;
});
console.log(personArr);
// [{name: "Bob", age: 20}, {name: "Alice", age: 25}, {name: "John", age: 30}]
将该集合按照名字的字母顺序排序:
personArr.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // 不区分大小写
var nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
});
console.log(personArr);
// [{name: "Alice", age: 25}, {name: "Bob", age: 20}, {name: "John", age: 30}]
JavaScript 中的 sort()
方法可以对集合进行排序,我们可以通过自定义比较函数来对数字、字符串和对象集合进行排序。在使用排序算法时需要考虑效率和稳定性,若数据量过大或需要排序的集合比较复杂,考虑使用其它高性能的排序算法。