欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javascript sort()排序用法

程序员文章站 2022-05-12 17:27:14
...

javascript sort()排序用法

sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。

语法:arrayObject.sort(sortFunction);

参数

  • arrayObj 必选项。任意 Array 对象。

  • sortFunction 可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

注意:sortFunction参数,用来规定排序的顺序,必须是函数。

一、sort()未传参数的使用

例1:arrayObj 均为字符串,则按照字母顺序排序;

var arr = ['ff','ee','xc','uu','kl'];
arr.sort();
console.log(arr);  //输出: ["ee", "ff", "kl", "uu", "xc"]

例2:arrayObj 均为数字或者数字型字符串,则按照字母顺序排序;

var arr = ['33',68,'65',325,'648'];
arr.sort();
console.log(arr);  //输出:[325, "33", "648", "65", 68]

例3:arrayObj 为字母型字符串或者数字或者数字型字符串,则按照字母顺序排序;

var arr = [8,'g',35,'e',5];
arr.sort();
console.log(arr); //输出:[35, 5, 8, "e", "g"]

上面三个例子可以看出,都是按照 unicode码 顺序排序,排序的规则似乎不是自己想要的,不着急,接下来我们来看看 sort 的参数 sortFunction 怎么来配合使用。

二、sort()传参数的使用

sortFunction 该函数需要比较两个值的大小,然后返回比较的结果,用于表明相对顺序。

  • 负值,如果所传递的第一个参数比第二个参数小。
  • 零,如果两个参数相等。
  • 正值,如果第一个参数比第二个参数大。

形象说法为:函数有两个参数 a 和 b 进行比较,如下:

  • 若 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
  • 若 a = b,则返回 0。
  • 若 a - b 大于零, 则返回一个大于零的值,数组将按照降序排列。

例1:arrayObj 均为字符串,则不做任何排序操作

var arr = ['ww','ff','dd','kk'];
function compare(a,b){
    return a-b;
}
console.log(arr.sort(compare)); //输出:["ww", "ff", "dd", "kk"]
var arr = ['ww','ff','dd','kk'];
function compare(a,b){
    return b-a;
}
console.log(arr.sort(compare)); //输出:["ww", "ff", "dd", "kk"]

例2:arrayObj 为字母型字符串或者数字型字符串,则不做任何排序操作

var arr = ['w',5,'d',2];
function compare(a,b){
    return a-b;
}
console.log(arr.sort(compare)); //输出:["w", 5, "d", 2]
var arr = ['w',5,'d',2];
function compare(a,b){
    return b-a;
}
console.log(arr.sort(compare)); //输出:["w", 5, "d", 2]

例3:arrayObj 均为数字或者数字型字符串,则按规则排序

var arr = [5,'3',6,'8',2];
function compare(a,b){
    return a-b;
}
console.log(arr.sort(compare)); //输出:[2, "3", 5, 6, "8"]
var arr = [5,'3',6,'8',2];
function compare(a,b){
    return b-a;
}
console.log(arr.sort(compare)); //输出: ["8", 6, 5, "3", 2]

以上例子可以看出 ,只有数字和数字型字符串才能进行比较;在使用时需要注意 sortFunction 参数的规则;

三、sort() 参数 sortFunction 扩展

上面的例子都是单一的数组格式。在实际应用中,尤其是在数据交互中,后端会返回 json 格式的数据; 那么对于这种数据,我们该如何判断呢?请看下面这个例子:

var obj = [
	{username:'张三',age:40,sex:1},
	{username:'李四',age:35,sex:2},
	{username:'王五',age:45,sex:1}
];
function compare(key){
	return function(a,b){  //此时的a和b对应的是obj当中的元素
		var val1 = a[key];
		var val2 = b[key];
		return val1-val2;
    }
}
console.info(obj.sort(compare('age')));
/*输出:[
				{username: "李四", age: 35, sex: 2},
				{username: "张三", age: 40, sex: 1},
				{username: "王五", age: 45, sex: 1}
			 ]
*/

关于的 sort() 的用法就介绍到这里,如果你有更多关于sort()的用法,愿你能予以补充!谢谢!