Javascript字符串排序

Javascript字符串排序,javascript,sorting,Javascript,Sorting,当涉及到字符串时,我正试图用Javascript进行排序。 好的,我这里有一个函数: var numericalOrder = function(array){ if(arguments.length === 0 || !Array.isArray(array)){ throw new Error(); } var anyChange; for(var i = 0; i < array.length - 1; i++){ an

当涉及到字符串时,我正试图用Javascript进行排序。 好的,我这里有一个函数:

var numericalOrder = function(array){
    if(arguments.length === 0 || !Array.isArray(array)){
        throw new Error();
    }
    var anyChange;
    for(var i = 0; i < array.length - 1; i++){
        anyChange = false;
        for(var x = 0; x < array.length - 1; x++){
            if(array[x] > array[x + 1]){
                anyChange = true;
                var temp = array[x];
                array[x] = array[x + 1];
                array[x + 1] = temp;
            }
        }
        if(!anyChange){
            return array;
        }
    }
    return array;
};
var numericallorder=函数(数组){
if(arguments.length==0 | |!Array.isArray(Array)){
抛出新错误();
}
var变化;
对于(var i=0;i数组[x+1]){
anyChange=true;
var-temp=数组[x];
数组[x]=数组[x+1];
阵列[x+1]=温度;
}
}
如果(!anyChange){
返回数组;
}
}
返回数组;
};

当给定一个数字数组时,该函数将按数字顺序排列值,但我感到困惑的是,同一个函数如何能够按字母顺序排列字符串数组。我知道javascript中有一个array sort()方法,但我正试图完全理解这个概念。感谢您的帮助:)

可以比较字符串,这样即使数组成员是字符串,函数也可以工作


'a'>'b'==false
'c'>'b'==true

您的函数将对数字和字符串进行排序,因为JavaScript将尝试使用>运算符比较任意两个变量,并尽最大努力确保比较有意义。它甚至会尽可能将操作数的类型强制为“like”类型。因此,如果比较“a”>1,则在进行比较之前,它会将1转换为字符串“1”。但如果您比较“0”>1,我相信在进行比较之前,它会将“0”变成0。这种类型转换在JavaScript中经常发生,导致一些非常奇怪的结果,例如“false”==true:)

如果要比较字符串,可以使用“.charCodeAt()(获取字符的ascii数),但我会直接比较这两个字符串,因为“before”<“after”===false

关于使用关系运算符的类型强制的更多详细信息我认为您需要将“hasHadChange”更改为“anyChange”。是的,这是一个输入错误。哎呀!