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;
});
本文详细介绍了JavaScript数组的sort方法,包括基本用法、自定义排序规则以及如何对包含对象的数组进行排序。通过示例代码展示了升序和降序排序,并解释了排序函数的工作原理。此外,还提供了对包含对象属性排序的实例,涉及根据对象的特定属性进行升序或降序排列。
6180





