日期:2014-05-16  浏览次数:20395 次

关于字符串的比较问题


书上说的

数值5虽然小于10 但在进行字符串比较时,"10" 则位于"5"的前面

也就是说是用js中的sort()方法排序 0,1,5,10,15的结果是

0,1,10,15,5

问一下这个关于字符串的排序是怎么排的,有没有什么标准!

------解决方案--------------------
传递排序的比较方法
JScript code
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

------解决方案--------------------
http://www.w3school.com.cn/js/jsref_sort.asp

楼主参考下

里面有段

说明
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。


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