js数组排序之Array.sort()函数

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);

js数组排序之Array.sort()函数_第1张图片

  • 对包含对象的数组排序,要求根据对象中的姓名不区分大小写进行由大到小的顺序排列(字符串型)
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);

js数组排序之Array.sort()函数_第2张图片

  • 对数组元素随机排序
			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);

在这里插入图片描述

你可能感兴趣的:(javascript,javascript)