js数组排序之Array.sort()函数
1. sort函数的基本信息
语法:
arr.sort([compareFunction])
参数:
compareFunction [可选] 用于数组排序规则的比较函数。如果不含有该参数,数组元素按照转换字符串的各个字符的Unicode编码顺序进行排序。 compareFunction 参数: firstElement 用于比较的第一个元素 secondElement 用于比较的第二个元素
返回值:
排序后的数组,返回的是当前数组。 sort内的函数返回值小于0, firstElement排在secondElement前面; 返回值等于 0, firstElement,secondElement相等顺序无关要紧; 返回值大于 0, firstElement排在secondElement后面;
2. 应用方式
不使用任何参数的排序(默认按照数组转成字符串后的结果每一位的Unicode编码进行排序)
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);
发表评论