前端开发

 首页 > 前端开发 > javascript > javascript中sort()排序实例介绍

javascript中sort()排序实例介绍

分享到:
【字体:
导读:
          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,如果第一个参数位于第二个参数之后则返回一个正数。以下就是一个简单的比较函数:


 
                     
    function compare(value1,value2){ 
      if(value1value2){ 
        return 1; 
      }else{ 
        return 0; 
      } 
    } 
    function gradeDown(value1,value2){ 
      if(value1value2){ 
        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+'') 
    document.write("降序:"+down+''); 
    var value=[8,10,0,5,20]; 
        value.sort(); 
        alert(value); 
  

对于数值类型或者其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+'
');      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("
");      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


分享到:
javascript获取前几天与后几天实例
javascript获取前几天与后几天实例 代码如下: //根据时间chou函数返回日期(2013-10-10); function getLocalTime(ns) {     var d = new Date(parseInt(ns)).toLocaleDateString().replace(/[^d]/g, &#039;_&#039;).split(&#039;_&#039;);     var now = [];         for(i=0;i
iframe子页面与父页面在同域或不同域下的...
iframe子页面与父页面通信根据iframe中src属性是同域链接还是跨域链接,通信方式也不同。  一、同域下父子页面的通信  父页面parent.html        function say(){  alert("parent.html");  }  function callChild(){  myFrame.window.say();  myFrame.window.document.getElementById("button").val...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……