猿问

关于数组排序的问题

<!DOCTYPE>
<html>
  <head>
    <meta charset="utf-8">
    <title>IFE JavaScript Task 01</title>
  </head>
<body>

  <ul id="source">
    <li>北京空气质量:<b>40</b></li>
    <li>上海空气质量:<b>70</b></li>
    <li>天津空气质量:<b>80</b></li>
    <li>广州空气质量:<b>50</b></li>
    <li>深圳空气质量:<b>40</b></li>
    <li>福州空气质量:<b>32</b></li>
    <li>成都空气质量:<b>90</b></li>
    <li>常州空气质量:<b>95</b></li>
  </ul>

  <ul id="resort">
    
    <li>第一名:北京空气质量:<b>90</b></li>
    <li>第二名:北京空气质量:<b>90</b></li>
    <li>第三名:北京空气质量:<b>90</b></li>
    

  </ul>

  <button id="sort-btn">排序</button>
  <script>
  window.onload=function(){

  	var ali=document.getElementById('source').getElementsByTagName('li');
  	var ab=document.getElementById('source').getElementsByTagName('b');
  	var arr=[];
  	for(var i=0;i<ab.length;i++){
  		arr.push([ali[i].firstChild.nodeValue,ab[i].innerHTML]);
  	}
    function sortArr(arr){
        
        for(var i = 0; i < arr.length; i++){
            for(var j = 0; j < i; j++){
                if(arr[i][1] >= arr[j][1]){
                    var o = arr[i];
                    arr[i] = arr[j];
                    arr[j] = o;
                }
            }

        }
        /*return arr;*/
    }

    sortArr(arr);
  	var btn=document.getElementById("sort-btn");
  	var re=document.getElementById('resort');
  	var ali2=re.getElementsByTagName('li');
  	var ab2=re.getElementsByTagName("b");
  	btn.onclick=function(){
      for(var i=0;i<ali2.length;i++){

        ali2[i].firstChild.nodeValue="第一名:"+arr[i][0];
        ab2[i].firstChild.nodeValue=arr[i][1];
}
}
}
  </script>
</body>
</html>

上面这一串就是实现一个获得数据,然后塞进一个数组排序再显示的功能,但是数组不是单纯的按数字大小排序的,如果给个像110这样的数,那排序就乱了。

知道如果一般数组的话可以按sort(function(a,b){return a-b;});解决,但不明白原理,因为我上面的这个是数组套数组,试着写了几次没有成功,请问如何能够在这个基础上按数字大小排序,谢谢!

Kevinzoo
浏览 1005回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答