1. 默认升序
-
适用范围:数值 字符串
let arr = [5, 4, 3, 2, 1];
// 默认升序
arr.sort();
2.普通数组自定义排序
- cmp函数返回值大于0会进行交换位置排序
cmp函数使用方式:
arr.sort(cmp);
cmp函数1:
- 适用范围:数值 字符串
// 1.升序
function cmp(a, b) {
if (a <= b) {
return -1; //不交换位置
} else {
return 1; //交换位置
}
}
// 2.降序
function cmp(a, b) {
if (a < b) {
return 1; //不交换位置
} else {
return -1; //交换位置
}
}
cmp函数2:
- 适用范围:数值
// 1.升序
function cmp(a, b) {
return a - b;
}
// 2.降序
function cmp(a, b) {
return a - b;
}
3. 对象数组按某属性排序
cmp函数使用方式:
arr.sort(cmp(props));
cmp函数1:
- 适用范围:对象的属性值为数字 、字符串
// 1.升序
function cmp(props) {
return (obj1, obj2) => {
if (obj1[props] < obj2[props]) {
return -1;
} else {
return 1;
}
}
}
// 2.降序
function cmp(props) {
return (obj1, obj2) => {
if (obj1[props] < obj2[props]) {
return 1;
} else {
return -1;
}
}
}
cmp函数2:
- 适用范围:对象的属性值为数字
function cmp(props) {
return (obj1, obj2) => {
return obj1[props] - obj2[props];
}
}
// 2.降序
function cmp(props) {
return (obj1, obj2) => {
return obj2[props] - obj1[props];
}
}