书上说的数值5虽然小于10    但在进行字符串比较时,"10" 则位于"5"的前面也就是说是用js中的sort()方法排序 0,1,5,10,15的结果是0,1,10,15,5问一下这个关于字符串的排序是怎么排的,有没有什么标准!

解决方案 »

  1.   

    传递排序的比较方法
    var arr = [0, 1, 10, 15, 5];
    arr.sort();
    alert(arr);arr.sort(function(a, b){
        return a - b;
    });
    alert(arr); // 0,1,5,10,15
      

  2.   

    http://www.w3school.com.cn/js/jsref_sort.asp楼主参考下里面有段说明
    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
      

  3.   

    调用数组对象的sort()函数时是需要指定排序函数的,如1楼所示。如果你没有指定排序函数,那么元素就会按照ASCII字符顺序进行升序排列
      

  4.   

    sort会吧数组的每个元素转换成String类型  所以10和5其实是"10"和"5"
    至于比较方法  是先会比较第一个字符,如果相等则比较第二个,否则作为整个字符串比较的结果  依次类推
    "10"和"5"中先比"1"和"5"由于'1'的ascii码小于'5'所以  所以10排在5前面
      

  5.   

    "5".charCodeAt(0) => 53
    "10".charCodeAt(0) => 49