排序数字数组值

时间:2012-10-30 18:25:43

标签: javascript jquery arrays

我有一个数字数组,我想以降序显示它们,但是作为等级(第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 个答案:

答案 0 :(得分: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>')

})

DEMO:http://jsfiddle.net/XWs5j/1/

API参考:

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

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

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

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