From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/string/localecompare/index.html | 170 +++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 files/ja/web/javascript/reference/global_objects/string/localecompare/index.html (limited to 'files/ja/web/javascript/reference/global_objects/string/localecompare/index.html') diff --git a/files/ja/web/javascript/reference/global_objects/string/localecompare/index.html b/files/ja/web/javascript/reference/global_objects/string/localecompare/index.html new file mode 100644 index 0000000000..58a9b5d692 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/string/localecompare/index.html @@ -0,0 +1,170 @@ +--- +title: String.prototype.localeCompare() +slug: Web/JavaScript/Reference/Global_Objects/String/localeCompare +tags: + - Internationalization + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare +--- +
{{JSRef("Global_Objects", "String")}}
+ +

localeCompare() メソッドは参照文字列がソート順で引数で与えられた文字列と大なり、小なり、等しいとなるかどうかを示す数値を返します。

+ +
{{EmbedInteractiveExample("pages/js/string-localecompare.html")}}
+ + + +

新しいlocalesoptions 引数によってアプリケーションはソート順で使われる言語を指定し関数の振る舞いをカスタマイズできます。古い実装では、locales引数とoptions引数は無視されます。使用されるローケルとソート順は完全に実装依存しています。

+ +

構文

+ +
referenceStr.localeCompare(compareString[, locales[, options]])
+ +

引数

+ +
+
compareString
+
+

referenceStr と比較される文字列。

+
+
locales 、 options
+
+

これらの引数は関数の振る舞いをカスタマイズし、使用されるべきフォーマット規約の言語をアプリケーションに決めさせます。引数 locales 、 options を無視する実装においては、使用されるロケールと返却される文字列の書式は完全に実装依存となります。

+ +

これらのパラメーターの詳細及び使用方法については Intl.Collator() コンストラクター を見てください。

+
+
+ +
{{page('/docs/Web/JavaScript/Reference/Global_Objects/Collator', 'Parameters')}}
+ +
+

戻り値

+ +

referenceStr が compareString より前に出現する場合は負数、 referenceStr が compareString より後に出現する場合は正数、等しい場合は 0 。

+
+ +

説明

+ +

referenceStr が compareString より辞書順で先に来るか、後に来るか、あるいは等しいかを示す整数を返します。

+ + + +
+

戻り値が厳密に -1 や 1 であると考えないように

+ +

負数と正数が結果としてどんな数値になるかはブラウザー間(及びブラウザーのバージョン間)で異なります。これは W3C の仕様が負の値か正の値かとだけ指定しているためです。ブラウザーによっては-2 や 2 を、あるいはまた別の負の値、正の値を返却するかもしれません。

+
+ +

パフォーマンス

+ +

巨大な配列のソートなど大量の文字列を比較する場合は {{jsxref("Global_Objects/Collator", "Intl.Collator")}} オブジェクトを作成し、 {{jsxref("Collator.prototype.compare", "compare")}} プロパティで提供される関数を利用すると良いでしょう。

+ +

+ +

localeCompare()を使う

+ +
// 文字 "a" は "c" は負数になります
+'a'.localeCompare('c'); // -2 や -1 (あるいはまた別の負数)
+
+// 単語 "check" はアルファベット順に "against" より後ろなので正数になります
+'check'.localeCompare('against'); // 2 や -1 (あるいはまた別の正数)
+
+// "a" と"a" は等しいので自然数 0 になります
+'a'.localeCompare('a'); // 0
+
+ +

配列のソート

+ +

localeCompare() は case-insensitive な配列のソートを行います。

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

拡張された引数をブラウザーがサポートしているか調べる

+ +

引数 locales と options はすべてのプラウザでまだサポートされていません。

+ +

実装がこれらをサポートしているか調べるため引数  "i" (不正な言語タグが除外される要件)を利用し、例外 {{jsxref("RangeError")}} を調べます。

+ +
function localeCompareSupportsLocales() {
+  try {
+    'a'.localeCompare​('b', 'i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

localesを使う

+ +

localeCompare()によって得られる結果は言語間で違います。アプリケーションのユーザインターフェイスで使用される言語のソート順を得るために、 locales引数を使用してその言語(そしておそらくいくつかのフォールバック言語)を指定していることを確かめて下さい。:

+ +
console.log('ä'.localeCompare('z', 'de')); // 負数: ドイツ語で ä は a に分類される
+console.log('ä'.localeCompare('z', 'sv')); // 正数: スウェーデン語では ä は z の後になる
+
+ +

optionsを使う

+ +

localeCompare()によって得られる結果はoptions引数を使用することによってカスタマイズできます。:

+ +
// ドイツ語では ä の base letter は a
+console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0
+
+// スウェーデン語では ä と a は異なる base letters
+console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // a positive value
+
+ +

数字のソート

+ +
// デフォルトでは "2" > "10"
+console.log("2".localeCompare("10")); // 1
+
+// オプションを使った数字
+console.log("2".localeCompare("10", undefined, {numeric: true})); // -1
+
+// ロケールタグを使った数字
+console.log("2".localeCompare("10", "en-u-kn-true")); // -1
+
+ +

仕様

+ + + + + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}
{{SpecName('ES Int Draft', '#sup-String.prototype.localeCompare', 'String.prototype.localeCompare')}}
+ +

ブラウザ実装状況

+ +
+ + +

{{Compat("javascript.builtins.String.localeCompare")}}

+
+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf