跳到主要内容

JavaScript 字符串 localeCompare() 方法

localeCompare() 方法检查给定字符串在排序顺序中是在另一个字符串之前、之后还是相当。

示例

// 使用 localeCompare() 比较 'c' 和 'b'
let result1 = "c".localeCompare("b");

// 如果 'b' 在 'c' 之前,则返回正值
console.log(result1);

// 输出:
// 1

localeCompare() 语法

localeCompare() 方法的语法为:

str.localeCompare(compareStr, locales, options);

这里,str 是一个字符串。

localeCompare() 参数

localeCompare() 方法接受:

  • compareStr - 与 str 进行比较的字符串。
  • locales 和 options(可选)- 这些参数通过指定使用哪些格式化约定来自定义函数。

localeCompare() 返回值

localeCompare() 返回:

  • -1 : 如果参考字符串在 compareStr 之前排序。
  • 0 : 如果两个字符串相等。
  • 1 : 如果参考字符串在 compareStr 之后排序。

注意:由于返回的负数和正数在不同浏览器之间的值可能不同,因此不要依赖确切的值 -11

示例 1:使用 localeCompare() 方法

// 使用 localeCompare() 比较 'c' 和 'b'
let result1 = "c".localeCompare("b");

console.log(result1);

输出

1;

在上述示例中,我们将 'c' 作为参考字符串,'b' 作为比较字符串,并将 localeCompare() 的返回值赋给了 result1。

由于字母 'c''b' 之后,'c'.localeCompare('b') 返回正数,即 1

示例 2:使用 localeCompare()

// 使用 localeCompare() 比较 'c' 和 'b'
let result2 = "b".localeCompare("c");

console.log(result2);

输出

-1;

在这里,我们将 'b' 作为参考字符串,'c' 作为比较字符串。由于参考字符串在 compareStr 之前,'b'.localeCompare('c') 返回负值,即 -1

示例 3:localeCompare() 比较相等的字符串

// 使用 localeCompare() 比较 'JavaScript' 和 'JavaScript'
let result1 = "JavaScript".localeCompare("JavaScript");

console.log(result1);

// 使用 localeCompare() 比较 'Python' 和 'JavaScript'
let result2 = "Python".localeCompare("JavaScript");

console.log(result2);

输出

0;
1;

在上述示例中,我们比较了两个不相等的字符串 'Python''JavaScript'。由于 'Python''JavaScript' 之后,该方法返回 1

然而,在比较两个相等的字符串 'JavaScript' 时,该方法返回 0

示例 4:使用带 locales 和 options 的 localeCompare()

// 传递指定德国格式化约定的 locale
let value1 = "ä".localeCompare("z", "de");

console.log(value1); // 一个负值:在德语中,ä 排在 z 之前

// 传递指定瑞典格式化约定的 locale
let value2 = "ä".localeCompare("z", "sv");

console.log(value2); // 一个正值:在瑞典语中,ä 排在 z 之后

// 两个数字 '5' 和 '40' 的默认比较
console.log("5".localeCompare("40")); // 1

// 最后一个参数指明 'options'
let value3 = "5".localeCompare("40", undefined, { numeric: true });

console.log(value3); // 一个负值

输出

-1;
1;
1 - 1;