按字典顺序比较字符串

要按字母顺序比较字符串,请使用 localeCompare() 。如果引用字符串在比较字符串(参数)之前按字典顺序(按字母顺序),如果之后出现正值,则返回负值,如果它们相等则返回值 0

var a = "hello";
var b = "world";

console.log(a.localeCompare(b)); // -1

>< 运算符也可用于按字典顺序比较字符串,但它们不能返回零值(这可以使用 == 相等运算符进行测试)。因此,localeCompare() 函数的一种形式可以这样写:

function strcmp(a, b) {
    if(a === b) {
        return 0;
    }

    if (a > b) {
        return 1;
    }

    return -1;
}

console.log(strcmp("hello", "world")); // -1
console.log(strcmp("hello", "hello")); //  0
console.log(strcmp("world", "hello")); //  1

当使用基于返回值的符号(例如 sort)进行比较的排序函数时,这尤其有用。

var arr = ["bananas", "cranberries", "apples"];
arr.sort(function(a, b) {
    return a.localeCompare(b);
});
console.log(arr); // [ "apples", "bananas", "cranberries" ]