按字典顺序比较字符串
要按字母顺序比较字符串,请使用 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" ]