Intl.supportedValuesOf()

**Intl.supportedValuesOf()** 静态方法返回一个数组,其中包含实现支持的日历、排序规则、货币、数字系统或单位值。

重复项会被省略,数组按升序字典顺序排序(更准确地说,使用 Array.prototype.sort() 且比较函数为 undefined)。

此方法可用于测试特定实现中是否支持某些值,并且仅在必要时下载 polyfill。它还可以用于构建允许用户选择其首选本地化值的 UI,例如当 UI 从 WebGL 或服务器端创建时。

尝试一下

语法

js
Intl.supportedValuesOf(key)

参数

key

一个字符串键,指示要返回的值的类别。可以是以下之一:"calendar""collation""currency""numberingSystem""timeZone""unit"

返回值

一个已排序的唯一字符串值数组,指示实现针对给定键支持的值。

**注意:**虽然 IANA 数据库会不时更新,但 Unicode CLDR 数据库(浏览器使用)出于稳定性目的会保留旧时区名称。某些浏览器可能会使用旧名称,而其他浏览器则会将其覆盖为新名称。有关更多信息,请参阅 Intl.Locale.prototype.getTimeZones

异常

RangeError

如果作为参数传递了不受支持的键,则会抛出此异常。

示例

功能测试

您可以通过与 undefined 进行比较来检查该方法是否受支持

js
if (typeof Intl.supportedValuesOf !== "undefined") {
  // method is supported
}

获取键的所有值

要获取日历支持的值,您可以使用键 "calendar" 调用该方法。然后,您可以像下面所示迭代返回的数组

js
Intl.supportedValuesOf("calendar").forEach((calendar) => {
  // "buddhist", "chinese", "coptic", "dangi", etc.
});

**注意:**日历值返回的数组将始终包含值“gregory”(公历)。

其他值也以相同方式获取

js
Intl.supportedValuesOf("collation").forEach((collation) => {
  // "compat", "dict", "emoji", etc.
});

Intl.supportedValuesOf("currency").forEach((currency) => {
  // "ADP", "AED", "AFA", "AFN", "ALK", "ALL", "AMD", etc.
});

Intl.supportedValuesOf("numberingSystem").forEach((numberingSystem) => {
  // "adlm", "ahom", "arab", "arabext", "bali", etc.
});

Intl.supportedValuesOf("timeZone").forEach((timeZone) => {
  // "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", etc.
});

Intl.supportedValuesOf("unit").forEach((unit) => {
  // "acre", "bit", "byte", "celsius", "centimeter", etc.
});

无效键会抛出 RangeError

js
try {
  Intl.supportedValuesOf("someInvalidKey");
} catch (err) {
  //Error: RangeError: invalid key: "someInvalidKey"
}

规范

规范
ECMAScript 国际化 API 规范
# sec-intl.supportedvaluesof

浏览器兼容性

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

另请参阅