nodejs-sort排序

sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。

语法:

array.sort(fun(a,b));
fun是个函数用来规定排序顺序。参数可有可无,无参数则按默认排序

无参数:

不传参数,将不会按照数值大小排序,按照字符编码的顺序进行排序;
例1:

var arr = ['General','Tom','Bob','John','Army'];
var resArr = arr.sort();
console.log(resArr);
//输出   ["Army", "Bob", "General", "John", "Tom"]

例2:注意输出结果:并不是按照数值大小排序

var arr2 = [30,10,111,35,1899,50,45];
var resArr2 = arr2.sort();
console.log(resArr2);
//输出   [10, 111, 1899, 30, 35, 45, 50]

升序、降序

升序a-b

var arr3 = [30,10,111,35,1899,50,45];
arr3.sort(function(a,b){
	return a - b;
})
console.log(arr3);
//输出  [10, 30, 35, 45, 50, 111, 1899]

降序b-a

var arr4 = [30,10,111,35,1899,50,45];
arr4.sort(function(a,b){
	return b - a;
})
console.log(arr4);
//输出 [1899, 111, 50, 45, 35, 30, 10]

对数组中的对象的属性值排序,多个属性值多条件排序

id升序,id相同条件下age降序

var arr6 = [
		{id:10,age:2},
		{id:5,age:4},
		{id:6,age:10},
		{id:9,age:6},
		{id:2,age:8},
		{id:10,age:9}];
		
		arr6.sort(function(a,b){
			if(a.id === b.id){//如果id相同,按照age的降序
				return b.age - a.age
			}else{
				return a.id - b.id
			}
		})
		console.log(arr6);
		//输出新的排序
		//		{id: 2, age: 8}
		//		{id: 5, age: 4}
		//		{id: 6, age: 10}
		//		{id: 9, age: 6}
		//		{id: 10, age: 9}
		//		{id: 10, age: 2}

复杂排序实例:

版本号大小排序

var data = {
		"objects": [
            { "time": "2022-04-14 15:00",
                "app_version": "2.12.110.540" },
            {  "time": "2022-04-14 13:07",
                "app_version": "2.7.1.528" },
            { "time": "2022-04-14 14:59",
				"app_version": "2.12.90.536" }
			]
		}
data.objects.sort((a, b) => {
    var a_ver_list = a["app_version"].split('.');
    var b_ver_list = b["app_version"].split('.');
    var first_diff_index = 0;
    var arr_len = a_ver_list.length;
    var comp_ret = 0;
    for (; first_diff_index != arr_len; first_diff_index++){
        if (a_ver_list[first_diff_index] != b_ver_list[first_diff_index]){
            comp_ret = (parseInt(b_ver_list[first_diff_index], 10) - parseInt(a_ver_list[first_diff_index] ,10));
            break;
        }
    }
    return comp_ret;
});

输出结果:

"objects": [
            { "time": "2022-04-14 15:00",
              "app_version": "2.12.110.540" },
            { "time": "2022-04-14 14:59",
              "app_version": "2.12.90.536" },
            {  "time": "2022-04-14 13:07",
                "app_version": "2.7.1.528" }
              ]

在这里插入图片描述

参考链接:

https://blog.csdn.net/m0_37885651/article/details/80016718

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值