Intl.Collator.prototype.compare()

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本使用。自 2017 年 9 月以来,它已在浏览器中提供。

compare() 方法是 Intl.Collator 实例的一个方法,它根据该整理器对象的排序顺序比较两个字符串。

试一试

const enCollator = new Intl.Collator("en");
const deCollator = new Intl.Collator("de");
const svCollator = new Intl.Collator("sv");

console.log(enCollator.compare("z", "a") > 0);
// Expected output: true

console.log(deCollator.compare("z", "ä") > 0);
// Expected output: true

console.log(svCollator.compare("z", "ä") > 0);
// Expected output: false

语法

js
compare(string1, string2)

参数

string1, string2

要相互比较的字符串。

返回值

一个数值,表示根据此 Intl.Collator 对象的排序顺序,string1string2 之间的比较结果。

  • 如果 string1 排在 string2 之前,则返回一个负值;
  • 如果 string1 排在 string2 之后,则返回一个正值;
  • 如果它们被视为相等,则返回 0。

示例

使用 compare 对数组进行排序

使用 compare 函数对数组进行排序。请注意,该函数已绑定到它所属的整理器对象,因此可以直接传递给 Array.prototype.sort()

js
const a = ["Offenbach", "Österreich", "Odenwald"];
const collator = new Intl.Collator("de-u-co-phonebk");
a.sort(collator.compare);
console.log(a.join(", ")); // "Odenwald, Österreich, Offenbach"

使用 compare 函数在数组中查找匹配的字符串。

js
const a = ["Congrès", "congres", "Assemblée", "poisson"];
const collator = new Intl.Collator("fr", {
  usage: "search",
  sensitivity: "base",
});
const s = "congres";
const matches = a.filter((v) => collator.compare(v, s) === 0);
console.log(matches.join(", ")); // "Congrès, congres"

规范

规范
ECMAScript® 2026 国际化 API 规范
# sec-intl.collator.prototype.compare

浏览器兼容性

另见