Intl.supportedValuesOf()
静的メソッド Intl.supportedValuesOf()
は、実装で対応している暦、文字列の比較方法、通貨、数え方、単位が格納された配列を返します。
重複した値は除かれ、配列は辞書順の昇順で (より正確には、比較関数を undefined
に設定した Array.prototype.sort()
を用いて) ソートされています。
このメソッドは、特定の実装が値に対応しているかの機能テストを行い、必要な場合のみポリフィルをダウンロードするために用いることができます。また、たとえば UI が WebGL やサーバーサイドで構築される場合に、ユーザーが好きなローカライズされた値を選択できる UI を構築するためにも使用できます。
試してみましょう
構文
Intl.supportedValuesOf(key)
引数
key
-
返す値のカテゴリーを表すキー文字列です。
"calendar"
、"collation"
、"currency"
、"numberingSystem"
、"timeZone"
、"unit"
のいずれかです。
返値
指定のキーに対応する、実装で対応している値を表す重複のない文字列のソート済み配列です。
例外
RangeError
-
引数として未対応のキーが渡されたとき投げられます。
例
機能テスト
undefined
と比較することで、このメソッドに対応しているかをチェックできます。
if (typeof Intl.supportedValuesOf !== "undefined") {
// メソッドに対応している
}
キーに対応するすべての値を取得する
暦に関する対応している値を取得するには、キー "calendar"
を指定してこのメソッドを呼び出します。
その後、以下のように返された配列を走査できます。
Intl.supportedValuesOf("calendar").forEach((calendar) => {
// "buddhist", "chinese", "coptic", "dangi", etc.
});
メモ: 暦の値に関して返される配列には、常に値 "gregory"
(グレゴリオ暦) が含まれます。
他の値も、同様にして取得できます。
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 が投げられる
try {
Intl.supportedValuesOf("someInvalidKey");
} catch (err) {
//Error: RangeError: invalid key: "someInvalidKey"
}
仕様書
Specification |
---|
ECMAScript Internationalization API Specification # sec-intl.supportedvaluesof |
ブラウザーの互換性
BCD tables only load in the browser