数组对象排序+名次排序

实现效果,对成绩名次排序,先将数组对象进行排序再对排序结果进行名次排序

newArr:[],

dataArr:[
                    {
                        name:"张三1",
                        scoe:"67"
                    },
                    {
                        name:"张三2",
                        scoe:"12"
                    },
                    {
                        name:"张三3",
                        scoe:"45"
                    },
                    {
                        name:"张三4",
                        scoe:"67"
                    },
                    {
                        name:"张三5",
                        scoe:"12"
                    },
                    {
                        name:"张三6",
                        scoe:"45"
                    },
                    {
                        name:"张三6",
                        scoe:"1"
                    },
                    {
                        name:"张三6",
                        scoe:"1"
                    },
                    {
                        name:"张三7",
                        scoe:"67"
                    },
                    {
                        name:"张三8",
                        scoe:"78"
                    },
                    {
                        name:"张三9",
                        scoe:"67"
                    },
                    {
                        name:"张三10",
                        scoe:"78"
                    },
                    {
                        name:"张三11",
                        scoe:"99"
                    },
                    {
                        name:"张三12",
                        scoe:"99"
                    }
                ]

调用:this.newArr=this.getSort(sortByKey(this.dataArr,'scoe','drop'));

名次排序:

getSort(arr){
                let newArr=[]
                let Ranking=1;
                newArr.push({
                    name:arr[0].name,
                    scoe:arr[0].scoe,
                    Ranking:Ranking,
                })
                for(var i=1;i<arr.length;i++){
                    if(arr[i].scoe!=arr[i-1].scoe){
                        ++Ranking ;
                    }
                    newArr.push({
                        name:arr[i].name,
                        scoe:arr[i].scoe,
                        Ranking:Ranking,
                    })
                    
                }
                return newArr;
            },

  //数组对象排序
    function sortByKey(array,key,type){
        if(type=="drop"){//降序
            return array.sort(function(a,b){
                var x = b[key];
                var y = a[key];
                return((x<y)?-1:((x>y)?1:0));
            })
        }else if(type=="rise"){//升序
            return array.sort(function(a,b){
                var x = a[key];
                var y = b[key];
                return((x<y)?-1:((x>y)?1:0));
            })
        }
       
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值