var n =[3,4,5,6,23,34,532,1];
n.sort();                       // 结果[1,23,3,34,4,5,532,6] 错误
n.sort(function(a,b){return a-b ;});  // 结果 [1,3,4,5,6,23,34,532] 正确
上面那个我理解,下面的那种书写方式是怎么理解的?

解决方案 »

  1.   

    http://w3school.com.cn/js/jsref_sort.asp
      

  2.   

    sort接受函数
    函数返回bool值参数a,b表示比较的2数,返回true  a前,否则b。
      

  3.   

    sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。 如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 负值,如果所传递的第一个参数比第二个参数小。 
    零,如果两个参数相等。 
    正值,如果第一个参数比第二个参数大。 
      

  4.   

    大致能够理解,肯定是制定排序的规则。但是sort()函数具体是怎么执行的呢?
      

  5.   

    哈哈,楼主同学,您应该这么来理解哦:
    数组Array的sort(fn)方法是有参数的,该参数表示排序方式,也是一个排序依据,可以按小到大排,也可以按大到小排。上面的代码些完整的话,应该是这样的:n.sort(function(a,b){
        if(typeof(a) == "number" && typeof(b) == "number"){
            return (a > b) ? 1 : (a < b ? -1 : 0);
        }else{
            return a.localeCompare(b);
        }
    });
      

  6.   

    n.sort(function(a,b){return a-b ;});  // 结果 [1,3,4,5,6,23,34,532] 正确 明确传入一个 比较函数 来返回对2个元素之间大小的比较结果
    数组排序时候 对元素的大小比较就由 传进的函数来控制 也就是可以按自己的逻辑来排序元素