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
1
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中写法