1. sort函数的基本信息
arr.sort([compareFunction])
compareFunction [可选]
用于数组排序规则的比较函数。如果不含有该参数,数组元素按照转换字符串的各个字符的Unicode编码顺序进行排序。
compareFunction 参数:
firstElement 用于比较的第一个元素
secondElement 用于比较的第二个元素
排序后的数组,返回的是当前数组。
sort内的函数返回值小于0, firstElement排在secondElement前面; 返回值等于 0, firstElement,secondElement相等顺序无关要紧; 返回值大于 0, firstElement排在secondElement后面;
2. 应用方式
var ary = [311,43,54,4,40,26,31,33]
var arySortA = ary.sort();
console.log(arySortA);//26, 31, 311, 33, 4, 40, 43, 54
var ary = [311,43,54,4,40,26,31,33];
var arySortB = ary.sort(function(a,b){
return a-b;
})
console.log(arySortB);//4, 26, 31, 33, 40, 43, 54, 311
var ary = [311,43,54,4,40,26,31,33];
var arySortB = ary.sort(function(a,b){
return b-a;
})
console.log(arySortB);//311, 54, 43, 40, 33, 31, 26, 4
var arr = [{ 'name': '张三', age: 26 }, { 'name': '李四', age: 12 }, { 'name': '王五', age: 37 }, { 'name': '赵六', age: 4 }];
var arySortC = arr.sort((a, b) => {
return a.name - b.name;
});
console.log(arySortC);
const arr3 = [{ 'name': 'a张三', age: 26 }, { 'name': 'D李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'C赵六', age: 4 }];
var arySortD = arr3.sort((s, t) => {
const _s = s.name.toLowerCase(); // 'D李四' -> 'd李四'
const _t = t.name.toLowerCase();
if(_s > _t) {
return 1;
} else if(_s < _t) {
return -1;
} else {
return 0;
}
});
console.log(arySortD);
var arr4 = [{ 'name': 'a张三', age: 26 }, { 'name': 'd李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'c赵六', age: 4 }];
var arySortE = arr4.sort((s, t) => {
return Math.random() < 0.5 ? 1 : -1;
});
console.log(arySortE);