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 に答える