let scoreList = [['S1', 10], ['S2', 6], ['S3', 8], ['S4', 7], ['S5', 6], ['S6', 8], ['S7', 6], ['S8', 3]]
function getRankList(scoreList) {
// 请在这里写代码
//descendOrder是根据分数进行降序排序后的数组
let descendOrder = scoreList.sort(function(x, y) {
return y[1] - x[1];
});
//listRank是给排序后的数组descendOrder加上排名项之后的新数组
let listRank = descendOrder;
//遍历一次数组,根据每个元素第二项(分数)的值,添加为排名值(不包含并列情况)
//
for (let i = 0; i < descendOrder.length; i++) {
listRank[i].push(i);
}
//数组第一项是得分最高的,所以排名直接设置为1
listRank[0][2] = 1;
//遍历数组处理得分并列的情况(因为数组第一项已经设置好排名,因此从第二项开始)
for (let i = 1; i < descendOrder.length; i++) {
//如果前后分数相等,让后一项的排名值=前一项
if (listRank[i][1] === listRank[i-1][1]) {
listRank[i][2] = listRank[i-1][2];
}
//否则(分数不等),则让后一项的排名值=其下标+1
else {
listRank[i][2] = i+1;
}
}
//再逐一删除分数项(通过splice方法去除每一数组元素的第二项),留下公司名称和排名数组成的数组返回
for (let i = 0; i < listRank.length; i++) {
listRank[i].splice(1,1);
}
return listRank;
}
console.log(getRankList(scoreList));
console