实现效果,对成绩名次排序,先将数组对象进行排序再对排序结果进行名次排序
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));
})
}
}