我有一个数字数组,我想以降序显示它们,但是作为等级(第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的值与第一,第二,第三等进行排名?考虑到关系?
非常感谢。
答案 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/
编辑:创建“联系”数组的附加演示,并修改与之相关的值的输出