A-A+

js数组排序方法总结

2016年10月14日 前端设计 暂无评论 阅读 4 views 次

本文章介绍了我们常用的利用数组排序算法来介绍js中对数组排序的方法总结,包括有冒泡法排序与sort方法来排序,有需要的朋友可参考。

冒泡法排序,代码如下:

  1. <script type="text/javascript">  
  2. <!--  
  3.     function sort2(obj)  
  4.     {  
  5.         var arr=obj;  
  6.         var temp;  
  7.         for(var i=0;i<arr.length;i++)  
  8.         {  
  9.             for(var j=i+1;j<arr.length;j++)  
  10.             {  
  11.                 if(arr[i]<arr[j])  
  12.                 {  
  13.                     temp=arr[i];  
  14.                     arr[i]=arr[j];  
  15.                     arr[j]=temp;  
  16.                 }  
  17.             }  
  18.         }  
  19.         return arr;  
  20.     }  
  21.     alert(sort2([3,2,5,6,10,8,4,1]));  
  22. -->  
  23. </script>  

列2 利用sort方法来排序,代码如下:

  1. <script type="text/javascript">  
  2. <!--  
  3.     function sort1(obj)  
  4.     {  
  5.         var arr=obj;  
  6.         arr.sort(function(a,b){return a<b?1:-1});  
  7.         return arr; //xiariboke.net  
  8.     }  
  9.     alert(sort1([3,2,5,6,10,8,4,1]));  
  10. -->  
  11. </script>  

sort还有一个例子,代码如下:

  1. var arrDemo = new Array();  
  2.   
  3.  arrDemo[0] = 10;  
  4.  arrDemo[1] = 50;  
  5.  arrDemo[2] = 51;  
  6.  arrDemo[3] = 100;  
  7.   
  8.  arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组  
  9.   
  10.  alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序  
  11.   
  12.  arrDemo.sort(function(a,b){return a>b?1:-1});//从小到大排序  
  13.   
  14.  alert(arrDemo);//10,50,51,100  
  15.   
  16.  arrDemo.sort(function(a,b){return a<b?1:-1});//从大到小排序  
  17.   
  18.  alert(arrDemo);//100,51,50,10  

1.数组调用sort方法后,会影响本身(而非生成新数组)

2.sort()方法默认是按字符来排序的,所以在对数字型数组排序时,不可想当然的以为会按数字大小排序!

3.要改变默认的sort行为(即按字符排序),可以自行指定排序规则函数(如本例所示)

效率经我测试不管是在ie7还是在ff3下,都是sort1要快。

如希望通过二维数组中的第二列数据排序,代码如下:

  1. <script language="javascript">  
  2. <!--  
  3. var testArray = new Array();  
  4. testArray[0]= new Array('e','2','g');  
  5. testArray[1]= new Array('b','3','c');  
  6. testArray[2]= new Array('a','1','a');    
  7. testArray[3]= new Array('d','4','h');    
  8. testArray.sort(sortfunction);  
  9. alert(testArray[0] + " " + testArray[1] + " " + testArray[2] + " " + testArray[3])  
  10.   
  11. // 排序方法中有两个参数,表示数组中两个用来排序的元素  
  12. //  
  13. function sortfunction(x,y)  
  14. {  
  15.  return x[2].charCodeAt(0) - y[2].charCodeAt(0);//根据二维数组的第三列的第一个字母的ASCII码来降序排序  
  16. }  
  17.     // -->  
  18. </script>  
标签:

给我留言