0

我有一个数字数组,我想按降序显示它们,但作为排名(第 1、第 2、第 3 等)而不是它们的数值,同时考虑到平局(相等的数值)。

我的排序如下:

function mySorting(a, b) {
        a = a;
        b = b;
        return a == b ? 0 : (b < a ? -1 : 1)
    }

这与通话效果很好:

var myArray=[28,92,12,12,2];
myArray.sort(mySorting);

谁能指出我正确的方向,然后我将如何将 myArray 的值与第 1、第 2、第 3 等进行排名,并考虑到关系?

提前非常感谢。

4

1 回答 1

3

如果您使用的是 jQuery,您可以利用 2 个数组方法$.inArray()$.grep

创建用于排名的唯一值数组:

var ranks = $.grep(myArray, function(item, idx) {
    return item != myArray[idx - 1];
}).reverse();/* your sort function is descending I added reverse to the ranks , remove if needed*/

用途:

$.each(myArray, function(idx, item) {
    var rank= $.inArray( item, ranks)+1;/* index position and add one for 1st,second etc*/
    $('body').append('Rank of '+item+ ' is '+ rank+'<br>')

})

演示:http: //jsfiddle.net/XWs5j/1/

API 参考:

http://api.jquery.com/jQuery.grep/

http://api.jquery.com/jQuery.inArray/

编辑:创建“关系”数组并修改输出值的附加演示

http://jsfiddle.net/XWs5j/2/

于 2012-10-30T19:14:01.320 回答