对象数组排序

1、数组排序

var datas=["1001","1002","100201","100202","1003","1004",]
// 升序
datas.sort((a,b)=>a-b) //datas: ['1001', '1002', '1003', '1004', '100201', '100202']
// 降序
datas.sort((a,b)=>b-a)// datas: ['100202', '100201', '1004', '1003', '1002', '1001']
// 按字符串升序
datas.sort((a,b)=>a.localeCompare(b)) // datas:  ['1001', '1002', '100201', '100202', '1003', '1004']
// 按字符串降序
datas.sort((a,b)=>b.localeCompare(a)) // datas: ['1004', '1003', '100202', '100201', '1002', '1001']
 

2、多字段排序

			compare(sort,orderBy){ //这是比较函数
                return function(obj,obj1){
                    let a = 0;
                    let b = 0
                    if(orderBy){ // 有排序字段
                        let split = orderBy.split(',')
                        for(let i=0;i<split.length;i++){
                            a += isNaN(obj[split[i]])?0:obj[split[i]]
                            b += isNaN(obj1[split[i]])?0:obj1[split[i]]
                        }
                    }else{ // 没有排序字段
                        for(let key in obj){
                            a +=isNaN(obj[key])?0:obj[key]
                        }
                        for(let key in obj1){
                            b +=isNaN(obj1[key])?0:obj1[key]
                        }
                    }
                    if(sort==="desc")return b - a;//降序
                    return a - b; //升序
                }
            },
           /**
            * arr 要排序的数组
            * sort 升序 or 降序
            * orderBy 根据哪个字段排序 (多个字段以逗号分割)
            */
            rowsSort(arr,sort,orderBy){
                arr.sort(this.compare(sort,orderBy));
            },
            var arr=[
            {text:"row1",num:5,num1:0},
            {text:"row2",num:4,num1:2},
            {text:"row3",num:6,num1:1},
            {text:"row4",num:2,num1:5},
            ]
            this.rowsSort(arr,"desc","num,num1")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值