今天有个需求,要做个排行榜。后台Json传过来,坑爹的是要在前台排序。
心想,排序还不简单,什么折半冒泡之类的。
代码如下:
var userList = json....
//外层循环,共要进行arr.length次求最大值操作 for(var i=0;i<arr.length;i++){ //内层循环,找到第i大的元素,并将其和第i个元素交换 for(var j=i;j<arr.length;j++){ if(arr[i]<arr[j]){ //交换两个元素的位置 var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } }
结果悲剧了,折腾了一下午,最后找到原因。
要将Json数据的数字强制转换一下。
//外层循环,共要进行arr.length次求最大值操作 for(var i=0;i<userList.length;i++){ //内层循环,找到第i大的元素,并将其和第i个元素交换 for(var j=i;j<userList.length;j++){ if(parseInt(userList[i].num)<parseInt(userList[j].num)){ //交换两个元素的位置 var temp=userList[i]; userList[i]=userList[j]; userList[j]=temp; } } }