Intl.Collator() 构造函数

基线 广泛可用

此功能已得到很好的确立,并且可以在许多设备和浏览器版本中使用。自以下时间起,它已在各个浏览器中可用: 2017 年 9 月.

Intl.Collator() 构造函数创建 Intl.Collator 对象。

试一试

语法

js
new Intl.Collator()
new Intl.Collator(locales)
new Intl.Collator(locales, options)

Intl.Collator()
Intl.Collator(locales)
Intl.Collator(locales, options)

注意:Intl.Collator() 可以使用或不使用 new 调用。两者都会创建一个新的 Intl.Collator 实例。

参数

locales 可选

包含 BCP 47 语言标签的字符串或 Intl.Locale 实例,或此类区域设置标识符的数组。当传递 undefined 或未支持任何指定的区域设置标识符时,将使用运行时的默认区域设置。有关 locales 参数的一般形式和解释,请参阅 Intl 主页上的参数描述

允许使用以下 Unicode 扩展键

co

请参阅 collation

kn

请参阅 numeric

kf

请参阅 caseFirst

这些键也可以使用 options 设置(如下所列)。当两者都设置时,options 属性优先。

options 可选

包含以下属性的对象,按检索顺序排列(所有属性均为可选)

usage

比较是用于排序字符串列表还是模糊(对于拉丁文字母区分大小写和不区分大小写的)按键过滤字符串列表。可能的值为

"sort" (默认)

用于排序字符串列表。

用于通过测试每个列表项与键的完整字符串匹配来过滤字符串列表。使用 "search" 时,调用方应该只关注 compare() 是否返回零或非零,而不应该区分彼此的非零返回值。也就是说,不适合将 "search" 用于排序/订购。

localeMatcher

要使用的区域设置匹配算法。可能的值为 "lookup""best fit";默认值为 "best fit"。有关此选项的信息,请参阅 区域设置识别和协商

collation

某些区域设置的变体排序规则,例如 "emoji""pinyin""stroke" 等。有关支持的排序规则类型的列表,请参阅 Intl.Locale.prototype.getCollations();默认值为 "default"。此选项也可以通过 co Unicode 扩展键设置;如果两者都提供,则此 options 属性优先。

numeric

是否应使用数字排序规则,以便 "1" < "2" < "10"。可能的值为 truefalse;默认值为 false。此选项也可以通过 kn Unicode 扩展键设置;如果两者都提供,则此 options 属性优先。

caseFirst

大写或小写是否应先排序。可能的值为 "upper""lower""false"(使用区域设置的默认值);默认值为 "false"。此选项也可以通过 kf Unicode 扩展键设置;如果两者都提供,则此 options 属性优先。

sensitivity

字符串中的哪些差异会导致非零结果值。可能的值为

"base"

只有基本字母不同的字符串才会比较为不相等。例如:a ≠ b,a = á,a = A。

"accent"

只有基本字母或重音和其他变音符号不同的字符串才会比较为不相等。例如:a ≠ b,a ≠ á,a = A。

"case"

只有基本字母或大小写不同的字符串才会比较为不相等。例如:a ≠ b,a = á,a ≠ A。

"variant"

基本字母、重音和其他变音符号或大小写不同的字符串会比较为不相等。其他差异也可能会被考虑在内。例如:a ≠ b,a ≠ á,a ≠ A。

对于 "sort" 用法,默认值为 "variant";根据规范,对于 "search" 用法,它是依赖于区域设置的,但 "search" 的核心功能是不区分重音和不区分大小写的过滤,因此 "base" 最有意义(也许还有 "case")。

ignorePunctuation

是否应忽略标点符号。可能的值为 truefalse。对于泰语 (th),默认值为 true;对于所有其他语言,默认值为 false

异常

RangeError

如果 localesoptions 包含无效值,则抛出此异常。

示例

使用 Collator

以下示例演示了字符串出现在另一个字符串之前、之后或在同一级别时的不同潜在结果

js
console.log(new Intl.Collator().compare("a", "c")); // -1, or some other negative value
console.log(new Intl.Collator().compare("c", "a")); // 1, or some other positive value
console.log(new Intl.Collator().compare("a", "a")); // 0

请注意,上面代码中显示的结果可能因浏览器和浏览器版本而异。这是因为这些值是特定于实现的。也就是说,规范仅要求 before 和 after 值分别为负数和正数。

当用法为 "search" 时,调用方应只关注 compare() 的返回值是否为零或非零。不适合将用法为 "search"Collator 用于排序。

规范

规范
ECMAScript 国际化 API 规范
# sec-the-intl-collator-constructor

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅