1、sort函数的基本用法
数组的sort方法,默认按照字母顺序升序排序,更准确地说是按照ASCII码顺序排序;
let arr1 = ['b', 'g', 'a', 'd', 'c'];
console.log(arr1.sort()); // ["a", "b", "c", "d", "g"]
let arr2 = [5, 1, 8, 3];
console.log(arr2.sort()); // [1, 3, 5, 8]
2、sort函数接受一个函数作为参数
sort()方法中还可接受参数,参数为一个函数,用来指定按某种顺序进行排列的函数。
该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。凡是返回1或者大于0的正数的时候这两个值就要交换位置
// 升序排列
let arr1 = ['b', 'g', 'a', 'd', 'c'];
arr1.sort(function(a, b) {
if(a > b) {
return 1; // 交换顺序
} else {
return -1; // 顺序不变
}
}) // ["a", "b", "c", "d", "g"]
// 降序排列
let arr2 = [5, 1, 8, 3];
arr2.sort(function(a, b) {
if(a < b) {
return 1; // 交换顺序
} else {
return -1; // 顺序不变
}
}) // [8, 5, 3, 1]
// 升序排列
if(a>b) {
return 1;
} else {
return -1;
}
// 简化为:
return a-b;
// 降序排列简化为
return b - a;
// 所以上述降序排列可写为:
let arr2 = [5, 1, 8, 3];
arr2.sort(function(a, b) {
return b - a;
}) // [8, 5, 3, 1]
注意:return a-b;这种写法只适用于数字,因为字母无法进行加减运算
3、数组中包含对象进行排序
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 0 },
{ name: 'Zeros', value: 37 }
];
// sort by value
items.sort(function (a, b) {
return (a.value - b.value)
});
// sort by name
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});