JS的localeCompare问题

大家猜这个显示是多少:alert('2'.localeCompare('11'));  

参考下面介绍:
JavaS

cript中localeCompare函数方法是返回一个值,指出在当前的区域设置中两个字符串是否相同。使用方法:
stringVar.localeCompare(stringExp)
其中stringVar是必选项。一个 String 对象后文字。
stringExp是必选项。将与 stringVar 进行比较的字符串。

localeCompare 可以对 stringVar 和 stringExp 进行一个区分区域设置的字符串比较并返回 –1、0 或 +1,这取决于系统中缺省区域设置的排序。如果 stringVar 排序在 stringExp 之前,那么 localeCompare 返回 –1;如果 stringVar 排序在 stringExp 之后,则返回 +1。如果返回值为 0,那就说明这两个字符串是相同的。

对是1,准确的说是+1;也是说‘2’排序在‘11’之后,这与我们平时所要用的是不同的;
对此应该是这样才对:
var a="2,11,3,20, a, bb, cc, aaa, dd, dbb,add, adfas,ccc";
function cusSort(){
    c=a.split(",");
    c.sort(function(e,f){
        if(e.length == f.length){     //字符串相等才按字符串逐个比较
            for(var i=0; i<e.length; i++){
                for(var j=0; j<f.length; j++){
                    if(e.charCodeAt(i) == f.charCodeAt(j)){
                        return 0;
                    }else if(e.charCodeAt(i) > f.charCodeAt(j)){
                        return 1;
                    }else{
                        return -1;
                    }
                }
            }
        }else if(e.length > f.length){    //字符长的在排序在后
            return 1;
        }else{                        //反之;
            return -1;
        }
    });
}
 

你可能感兴趣的:(C++,c,F#,C#,J#)