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é']