主页 > 前端 > javascript >
来源:自学PHP网 时间:2016-07-08 16:29 作者: 阅读:次
[导读] js中数组排序使用的是array.sort()就可以了,下面我们一给大家举例说明关于sort()数组排序的一些实例,希望能给大家带来帮助。...
在默认情况下,sort()方法按升序排列数组项目——即最小的值位于最前面,最大的值位于最后面。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串,如下所示: var value=[8,10,0,5,20]; value.sort(value); alert(value);//0,10,20,5,8 可见,即使例子中值的顺序没有问题,但sort()方法也会根据测试字符串的结果改变原来的顺序。因为数值5虽然小于10,但是在进行字符串比较时候5位于10的前面,于是数组的顺序就被修改了,不用说,这种排序方式在很多情况下都不是最佳方案。因此sort()方法可以接收一个比较函数作为参数,以便我们指定那个值位于哪个值前面。 比较函数接收两个参数,如果第一个参数应该位于第二个参数前面则返回一个负数,如果两个参数相等则返回0,如果第一个参数位于第二个参数之后则返回一个正数。以下就是一个简单的比较函数: <script type="text/javascript"> function compare(value1,value2){ if(value1<value2){ return -1; }else if(value1>value2){ return 1; }else{ return 0; } } function gradeDown(value1,value2){ if(value1<value2){ return 1; }else if(value1>value2){ return -1; }else{ return 0; } } var values=[0,8,4,9,15]; var down=[0,8,4,9,15]; values.sort(compare); down.sort(gradeDown); document.write("升序:"+values+'<br />') document.write("降序:"+down+'<br />'); var value=[8,10,0,5,20]; value.sort(); alert(value); </script> 对于数值类型或者其valueof()方法会返回数值类型的对象类型,可以使用一个更简单的比较函数。这个函数只要第二个值减去第一个值即可。 function va(value1,value2){ return value2-value1; }//升序 function vac(value1,value2){ return value1-value2; }//降序 var co=[88,22,44,11,20] co.sort(va) var ka=[99,22,44,88,23] ka.sort(vac) document.write(co+'<br>'); document.write(ka) 如果只是想反转数组原来的顺序,使用reveres()方法会更快一点。 如下: var arrA = [6,2,4,3,5,1]; /**//*arrA.sort(); document.writeln(arrA); */ function desc(x,y) ...{ if (x > y) return -1; if (x < y) return 1; } function asc(x,y) ...{ if (x > y) return 1; if (x < y) return -1; } arrA.sort(desc); // sort by desc document.writeln(arrA); document.writeln("<br>"); arrA.sort(asc); //sort by asc document.writeln(arrA); //输出结果: 6,5,4,3,2,1 1,2,3,4,5,6 另外,可以直接把一个无名函数直接放到sort()方法的调用中。如下的例子是将奇数排在前面,偶数排在后面,例子如下: var arrA = [6,2,4,3,5,1]; arrA.sort( function(x, y) ...{ if (x % 2 ==0) return 11; if (x % 2 !=0) return -1; } ); document.writeln(arrA); //输出:1,5,3,4,6,2 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com