六维教程

JavaScript String.prototype.localeCompare函数

localeCompare()方法返回一个数字,表示参考字符串在排序顺序中是在给定字符串之前、之后还是与之相同。

语法

localeCompare(compareString)
localeCompare(compareString, locales)
localeCompare(compareString, locales, options)

参数

compareString

要与参考字符串进行比较的字符串。

locales (可选)

在不同的语言下 localeCompare() 所提供的结果是不一致的。为了能让用户得到正确的比较值,通过使用 locales 参数来提供要比较的语言(可能还需要设置某些回退语言)。

console.log("ä".localeCompare("z", "de")); // 负值:在德语中,ä 排在 z 之前
console.log("ä".localeCompare("z", "sv")); // 正值:在瑞典语中,ä 排在 z 之后

options (可选)

localeCompare() 所提供的结果可以通过 options 参数指定比较的详细行为。

// 在德语中,ä 以 a 为基础字母
console.log("ä".localeCompare("a", "de", { sensitivity: "base" })); // 0

// 在瑞典语中,ä 与 a 有着不同的基础字母
console.log("ä".localeCompare("a", "sv", { sensitivity: "base" })); // a positive value

返回值

数字,表示参考字符串在排序顺序中是在给定字符串之前、之后还是与之相同。

  • 如果参考字符串在给定字符串之前,则返回负数。
  • 如果参考字符串在给定字符串之后,则返回正数。
  • 如果参考字符串与给定字符串相同,则返回0。

示例

字符串

// 字母 "a" 在 "c" 之前,产生负值
"a".localeCompare("c"); // -2 or -1 (or some other negative value)

// 按字母顺序,"check" 一词出现在 "against" 之后,产生正值
"check".localeCompare("against"); // 2 or 1 (or some other positive value)

// "a" 和 "a" 相等,产生中性值 0
"a".localeCompare("a"); // 0

数字

// 默认情况下,"2" > "10"
console.log("2".localeCompare("10")); // 1

// 使用 options:
console.log("2".localeCompare("10", undefined, { numeric: true })); // -1

// 使用区域代码:
console.log("2".localeCompare("10", "en-u-kn-true")); // -1

对数组进行排序

localeCompare() 可以对数组进行大小写不敏感的排序。

const items = ["réservé", "Premier", "Cliché", "communiqué", "café", "Adieu"];
items.sort((a, b) => a.localeCompare(b, "fr", { ignorePunctuation: true }));
// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
上一篇
TypeScript 类型别名
下一篇
JavaScript Array.prototype.filter函数