JS根據分數,計算名次(分數相同名次相同)

1、首先先按分數從高到低排序,排序方法參照以下:

https://blog.csdn.net/qq_29483485/article/details/85003814

以下是按降序排列好的學生列表:

studentList:[{
    name:'張三',
    store:99,
    ranking:1,
},{
    name:'李四',
    store:98,
    ranking:2,
},{
    name:'王五',
    store:98,
    ranking:3,
},{
    name:'趙四',
    store:96,
    ranking:4,
},{
    name:'張好',
    store:96,
    ranking:5,
},{
    name:'李麗',
    store:95,
    ranking:6,
},{
    name:'王強',
    store:95,
    ranking:7,
}]

2、計算排名:

(1)分數相同,排名並列,按排名12345升序排列

let prescore = 0;//預定義分數
let ranking = 0;//排名

studentList.forEach((item,index)=>{
    if(item.store==prescore){
        item.ranking = ranking;
    }else{
        ranking++;
        prescore = item.store;
        item.ranking = ranking;
    }
})
console.log(studentList)

添加排名後的學生列表:

(2)分數相同,排名並列,按人數排名

let prescore = 0;//預定義分數
let ranking = 0;//排名
let same = 0; //是否相同

studentList.forEach((item,index)=>{
    if(item.store==prescore){
        item.ranking = ranking;
        same++;
    }else{
	ranking = ranking + same;
        ranking++;
        prescore = item.store;
        same=0;
        item.ranking = ranking;
    }
})

添加排名後的學生列表:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章