Js中sort()方法的用法

返回一个元素已经进行了排序的 Array 对象。

arrayobj.sort(sortfunction) 
参数
arrayObj 
必选项。任意 Array 对象。 
sortFunction 
可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,
那么元素将 默认按照 ASCII 字符顺序进行升序排列。 
说明
sort 方法将 Array 对象进行适当的排序;
在执行过程中并不会创建新的 Array 对象。

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 

负值,如果所传递的第一个参数比第二个参数小。 
零,如果两个参数相等。 
正值,如果第一个参数比第二个参数大。 


Demo1默认按字母排序): 

1 <script language="javascript">  
2   var nameArr = new Array("douguoqiang","hedan","redhacker","panliu888","maxuan","xuejianping","lanse","zhangsan","lisi","wangwu");  
3   nameArr.sort();  
4   for (var i = 0; i < nameArr.length; i++) {  
5     document.writeln(nameArr[i]);  
6   }  
7 </script> 

结果:douguoqiang hedan lanse lisi maxuan panliu888 redhacker wangwu xuejianping zhangsan 

Demo2(数字排序,sort(prama)方法带参数): 

1 <script>  
2   var numArr = new Array(12,23,1,4,23,34,2,5);  
3   numArr.sort(function compare(a,b){return a-b;});  
4   for (var i = 0; i<numArr.length; i++) {  
5     document.write(numArr[i] +"<br>");  
6   }  
7 </script> 

结果:
1
2
4
5
12
23
23
34 

Demo3(Demo3反排序): 

1 <script>  
2   var numArr = new Array(12,23,1,4,23,34,2,5);  
3   numArr.sort(function compare(a,b){return b-a;});  
4   for (var i = 0; i<numArr.length; i++) {  
5     document.write(numArr[i] +"<br>");  
6   }  
7 </script> 

结果:
34
23
23
12
5
4
2

Demo4(Demo2的第二种写法):

1 <script>  
2   var numArr = new Array(12,23,1,4,23,34,2,5);  
3   numArr.sort(new Function("a","b","return a-b;"));  
4   for (var i = 0; i<numArr.length; i++) {  
5     document.write(numArr[i] +"<br>");  
6   }  
7 </script> 

结果: 同 Demo2

Demo5(Demo2的第三种写法):

 1 <script>  
 2   function compare(a,b) {  
 3     return a-b;  
 4   }  
 5   var numArr = new Array(12,23,1,4,23,34,2,5);  
 6   numArr.sort(compare);  
 7   for (var i = 0; i<numArr.length; i++) {  
 8     document.write(numArr[i] +"<br>");  
 9   }  
10 </script> 

结果: 同 Demo2

Demo6(Demo2的第四种写法): 

 

 1 <script>  
 2   var compare = function(a,b) {  
 3     return a-b;  
 4   }  
 5   var numArr = new Array(12,23,1,4,23,34,2,5);  
 6   numArr.sort(compare);  
 7   for (var i = 0; i<numArr.length; i++) {  
 8     document.write(numArr[i] +"<br>");  
 9   }  
10 </script> 

结果: 同 Demo2

 

PS:

1、function compare(a,b){return a-b;}

  这个函数相当于一个委托(或许说谓词函数更为贴切一些),因为要对数组排序,必然要涉及到两个数组成员的比较,这个函数为你提供一种选择,以改变默认的大小比较规则,排序结果根据这个规则进行比较(函数返回值小于0认为是第一个元素小于第二个元素,等于0是两个元素相等,大于0是第一个元素大于第二个元素)。简单的改变这个函数,你就可以实现倒序排序。也可以对一个具有多个属性的对象进行排序。

2、升序函数:function compare(a,b){return a-b;};  

  降序函数:function compare(a,b){return b-a;};

3、demo2、4、5、6 为函数的4中写法

posted @ 2016-04-26 11:28  橙橙的麦田  阅读(501)  评论(0编辑  收藏  举报