实际上就是判断函数的返回值是正还是负,
正常的用法是
if(x>y)
 return 1;
if(x<y)return -1;根据这个结果来排序的

解决方案 »

  1.   

    谢楼上的,不过我问的不是那个匿名函数的问题,而是sort是如何引用匿名函数进行比较,进而排序的;换句话说也就是sort比较的方法。
      

  2.   

    举个自定义的小例子:
    Array.prototype.max(func){
      var n_max=0;
      for(var i=0;i<this.length;i++)
        if(func(this[i],this[n_max])>0)
        //两元素x,y进行比较,这是排序的基础,至于sort如何循环比较进行排序,应该是效率最高的吧,
        //估计和java里面的排序法一样,java或js相关文档里应该有介绍
          n_max=i;
      return this[n_max];
    }
      

  3.   

    myArray.sort(sortMethod)按降序排列数字
      

  4.   

    这样吧,谁能用算法,解释一下那个结果。hoho~
      

  5.   

    <script language="javascript">
    var myArray = [1,2,3,4,5,6];
    myArray.sort( function(x, y) {
      document.writeln(x+","+y+"<br>");
                                  if (x % 2)  
                                     return -1;
                                  if (x % 2 == 0)          
                                     return 1;
                                 }
                );
    document.writeln(myArray);
    </script>
    不知楼主有没有学过排序的算法
    这样可以看看sort的比较顺序其实我个人认为讨论这个没有意义,只要学会怎样用就行
    如果要从小到大,可以在函数里加判断
      

  6.   

    iamif(IF) ( ) 信誉:100    Blog  2006-9-17 11:11:42  得分: 0  
     
     
       
    谢楼上的,不过我问的不是那个匿名函数的问题,而是sort是如何引用匿名函数进行比较,进而排序的;换句话说也就是sort比较的方法。
    ===================
    这部分代码我好象在delphi里面也见过,大概意思说排序用什么方法用户可以不用管,但是
    用户要定义一个比较函数,用来定义两个对象之间以何种比较标准进行排序,一般数字的话
    无外乎就是比较大小,但是也有其他情况,比如楼主你这样的将偶数提前的规则.大概的伪代码可能是function sort()
    {
       for(某一排序算法)
       {
           if(比较函数(x,y)==1)
           {
               x,y调换位置;
           }
           else
          { 
             x,y位置不变;      }
       }
    }
      
     
      

  7.   

    这个,就是告诉我们Array.sort如何实现排序控制。 我们根据自己的需要重写那个函数,就可以控制sort排序的规则。
    <script language="javascript">
    var myArray = [6,2,4,3,5,1];
    function aaa(x,y)
    {
            if (x > y)  
    return -1;
    if (x < y)          
    return 1;
    }
    function aaa(x,y)
    {
            if (x > y)  
    return -1;
    if (x < y)          
    return 1;
    } myArray.sort(aaa);
    document.writeln(myArray);
    </script>
      

  8.   


    <script language="javascript">
    var myArray = [6,2,4,3,5,1];
    function aaa(x,y)
    {
            if (x > y)  
    return -1;
    if (x < y)          
    return 1;
    }
             function bbb(x,y)
    {
            if (x > y)  
    return -1;
    if (x < y)          
    return 1;
    } myArray.sort(aaa);  //升序
    document.writeln(myArray);
    myArray.sort(bbb);  //降序
    document.writeln(myArray);
    </script>自己体会吧。
      

  9.   

    <script language="javascript">
    var myArray = [6,2,4,3,5,1];
    function aaa(x,y)
    {
            if (x > y)  
    return -1;
    if (x < y)          
    return 1;
    }
             function bbb(x,y)
    {
            if (x > y)  
    return 1;
    if (x < y)          
    return -1;
    }myArray.sort(aaa);  //降序
    document.writeln(myArray);
    myArray.sort(bbb);  //升序
    document.writeln(myArray);
    </script>我个人理解就是要是返回为真就执行交换,要是假就不知道而,而执行交换的条件就是为真的条件
      

  10.   

    <script language="javascript">
    var myArray = [6,2,4,3,5,1];
    function aaa(x,y)
    {
            if (x > y)  
    return -1;
    if (x < y)          
    return 1;
    }
             function bbb(x,y)
    {
            if (x > y)  
    return 1;
    if (x < y)          
    return -1;
    }myArray.sort(aaa);  //降序
    document.writeln(myArray);
    myArray.sort(bbb);  //升序
    document.writeln(myArray);
    </script>我个人理解就是要是返回为真就执行交换,要是假就不交换,而执行交换的条件就是为真的条件
      

  11.   

    看了一下中间输出,看来x和y的选取还是有一定讲究的。偶去看看java的源代码。