A-A+
js数组排序方法总结
本文章介绍了我们常用的利用数组排序算法来介绍js中对数组排序的方法总结,包括有冒泡法排序与sort方法来排序,有需要的朋友可参考。
冒泡法排序,代码如下:
- <script type="text/javascript">
- <!--
- function sort2(obj)
- {
- var arr=obj;
- var temp;
- for(var i=0;i<arr.length;i++)
- {
- for(var j=i+1;j<arr.length;j++)
- {
- if(arr[i]<arr[j])
- {
- temp=arr[i];
- arr[i]=arr[j];
- arr[j]=temp;
- }
- }
- }
- return arr;
- }
- alert(sort2([3,2,5,6,10,8,4,1]));
- -->
- </script>
列2 利用sort方法来排序,代码如下:
- <script type="text/javascript">
- <!--
- function sort1(obj)
- {
- var arr=obj;
- arr.sort(function(a,b){return a<b?1:-1});
- return arr; //xiariboke.net
- }
- alert(sort1([3,2,5,6,10,8,4,1]));
- -->
- </script>
sort还有一个例子,代码如下:
- var arrDemo = new Array();
- arrDemo[0] = 10;
- arrDemo[1] = 50;
- arrDemo[2] = 51;
- arrDemo[3] = 100;
- arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组
- alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序
- arrDemo.sort(function(a,b){return a>b?1:-1});//从小到大排序
- alert(arrDemo);//10,50,51,100
- arrDemo.sort(function(a,b){return a<b?1:-1});//从大到小排序
- alert(arrDemo);//100,51,50,10
1.数组调用sort方法后,会影响本身(而非生成新数组)
2.sort()方法默认是按字符来排序的,所以在对数字型数组排序时,不可想当然的以为会按数字大小排序!
3.要改变默认的sort行为(即按字符排序),可以自行指定排序规则函数(如本例所示)
效率经我测试不管是在ie7还是在ff3下,都是sort1要快。
如希望通过二维数组中的第二列数据排序,代码如下:
- <script language="javascript">
- <!--
- var testArray = new Array();
- testArray[0]= new Array('e','2','g');
- testArray[1]= new Array('b','3','c');
- testArray[2]= new Array('a','1','a');
- testArray[3]= new Array('d','4','h');
- testArray.sort(sortfunction);
- alert(testArray[0] + " " + testArray[1] + " " + testArray[2] + " " + testArray[3])
- // 排序方法中有两个参数,表示数组中两个用来排序的元素
- //
- function sortfunction(x,y)
- {
- return x[2].charCodeAt(0) - y[2].charCodeAt(0);//根据二维数组的第三列的第一个字母的ASCII码来降序排序
- }
- // -->
- </script>