谁说的,你排序后的结果不是3,3.5,"abc",怎么会一样呢
alert('1'.charCodeAt(0))
alert('a'.charCodeAt(0))Array.sort()是按chartCodeAt返回的Ascii码的大小从小到大排的。

解决方案 »

  1.   

    调用sort()方法如果不传递参数给它,那么它将按字母顺序给数组排序.如果要按照别的顺序来排序的话,需要将一个比较函数作为参数传递给sort()方法,比较函数确定它的两个参数哪个在前,哪个在后.
    var a=[23,68,2000,123];
    a.sort();   //这样用是把元素按字母顺序排列.结果是:123,23,2000,68
    a.sort(function{(a,b) return a-b;});   //这样用是按数字大小来排序.结果是:26,68,123,2000
    所以排序的规则是由传递给sort()方法的那个函数决定的.
      

  2.   

    sort方法的排序是采用交换排序,所以,它接受一个函数对象为参数,在排序过程中,会将当前比较的两个Item传给该函数,然后根据返回值大于小于等于0来决定是否将两个Item换位。
      

  3.   

    对于我上面那位,你的例子是不对的,写法不对,应为:var a=[23,68,2000,123];
    a.sort();   //这样用是把元素按字母顺序排列.结果是:123,23,2000,68
    a.sort(function(a,b){return a-b;});   //这样用是按数字大小来排序.结果是:26,68,123,2000