sort()函数对数组进行排序的几种方法。
sort()函数是JavaScript中常用的数组排序函数,可以对数组中的元素进行升序或降序排列。在JavaScript中,sort()函数是在数组上调用的函数,它会改变原数组。
sort()函数的基本语法如下:
array.sort([compareFunction])
其中,array是要排序的数组,compareFunction是可选参数,用来指定排序的规则。如果不传入compareFunction,则默认按照数组元素的Unicode编码进行升序排列。
下面介绍几种常用的方法对数组进行排序:
1、使用默认排序规则
对于数字或字母等简单类型的数组,可以直接使用默认排序规则进行排序。
例如,以下代码对一个数字数组进行升序排列:
let arr = [4, 2, 6, 1, 3];
arr.sort();
console.log(arr); //输出[1, 2, 3, 4, 6]
2、自定义排序规则
当要对复杂类型的数组进行排序时,如对象数组,需要自定义排序规则。可以通过传递一个比较函数作为参数来实现自定义排序规则。
比较函数的基本语法如下:
function compareFunc(a, b){
//比较逻辑
}
其中,a和b分别表示需要比较的数组元素。当compareFunc(a, b)返回负数时,a会被排在b的前面,当返回正数时,a会被排在b的后面,当返回0时,a和b的顺序不变。
例如,以下代码使用自定义的比较函数对一个对象数组按照年龄进行升序排列:
let objArr = [
{ name: 'Tom', age: '28' },
{ name: 'Mike', age: '22' },
{ name: 'Jack', age: '35' }
];
function compareFunc(obj1, obj2) {
return obj1.age - obj2.age;
}
objArr.sort(compareFunc);
console.log(objArr); //输出 [{ name: 'Mike', age: '22' },{ name: 'Tom', age: '28' },{ name: 'Jack', age: '35' }]
3、降序排列
sort()函数默认对数组进行升序排列,如果需要进行降序排列,可以通过比较函数来实现。比较函数需要将返回值取反,这样就可以实现降序排列。
例如,以下代码对一个数字数组进行降序排列:
let arr = [4, 2, 6, 1, 3];
function compareFunc(a, b){
return b - a;
}
arr.sort(compareFunc);
console.log(arr); //输出[6, 4, 3, 2, 1]
4、按照字符串的字典序进行排序
如果数组中元素为字符串,可以使用localeCompare()方法来进行字典序的比较。
例如,以下代码对一个字符串数组按照字典序进行升序排列:
let strArr = ["apple", "banana", "orange", "grape"];
strArr.sort(function (a, b) {
return a.localeCompare(b);
});
console.log(strArr); //输出 ["apple", "banana", "grape", "orange"]
5、按照数组的某个属性进行排序
当数组的元素是对象,且需要按照某个属性进行排序时,可以通过传入比较函数来实现。
例如,以下代码对一个对象数组按照name属性进行升序排列:
let objArr = [
{ name: 'Tom', age: '28' },
{ name: 'Mike', age: '22' },
{ name: 'Jack', age: '35' }
];
function compareFunc(obj1, obj2){
if(obj1.name > obj2.name){
return 1;
}else if(obj1.name < obj2.name){
return -1;
}else{
return 0;
}
}
objArr.sort(compareFunc);
console.log(objArr); //输出 [{ name: 'Jack', age: '35' },{ name: 'Mike', age: '22' },{ name: 'Tom', age: '28' }]
总结:
sort()函数是JavaScript中常用的数组排序函数,可以对数组中的元素进行升序或降序排列。使用sort()函数可以方便地对数组进行排序,并且可以根据需要自定义排序规则。在进行排序时,需要注意数组元素的类型及排序规则的要求,以便得到正确的排序结果。
