如何按数值对数字进行排名?

时间:2017-10-12 12:41:27

标签: algorithm math

如何将任意数字列表转换为排名列表?

以下列数字为例:

1, 2, 3, 3, 6, 8, 8, 8, 9, 10, 10, 11

翻译为排名列表:

rank: value
   1: 1
   2: 2
   3: 3
   3: 3
   4: 6
   5: 8
   5: 8
   5: 8
   6: 9
   7: 10
   7: 10
   8: 11

有优雅的方法吗?

1 个答案:

答案 0 :(得分:3)

你可以做到

let arr = [1, 2, 3, 3, 6, 8, 8, 8, 9, 10, 10, 11];

let idx = 0;
for(let i=0; i<arr.length; i++){
    if(i>0 && arr[i] == arr[i-1])
        console.log(idx);
    else
        console.log(++idx);
}

检查数组中的值是否等于前一个数组。如果是,那么等级将保持不变,否则增加等级