From 0620c64b1449cad0c287328b578c5117a045b063 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 19 Sep 2021 12:04:54 +0900 Subject: Global_Objects/String/localeCompare を更新 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Markdown へ変換 - 2021/07/21 時点の英語版に同期 --- .../global_objects/string/localecompare/index.md | 180 +++++++++------------ 1 file changed, 79 insertions(+), 101 deletions(-) (limited to 'files/ja/web/javascript') diff --git a/files/ja/web/javascript/reference/global_objects/string/localecompare/index.md b/files/ja/web/javascript/reference/global_objects/string/localecompare/index.md index e88234381b..60b166b4b5 100644 --- a/files/ja/web/javascript/reference/global_objects/string/localecompare/index.md +++ b/files/ja/web/javascript/reference/global_objects/string/localecompare/index.md @@ -8,161 +8,139 @@ tags: - Prototype - Reference - String +browser-compat: javascript.builtins.String.localeCompare translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare --- -
{{JSRef("Global_Objects", "String")}}
+{{JSRef}} -

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

+**`localeCompare()`** メソッドは、参照先の文字列が整列順で与えられた文字列より前に来るか、後に来るか、同じであるかを示す数値を返します。 -
{{EmbedInteractiveExample("pages/js/string-localecompare.html")}}
+{{EmbedInteractiveExample("pages/js/string-localecompare.html")}} +新しい `locales` と `options` 引数を使用すると、アプリケーションが整列順で使用される言語を指定し、関数の動作をカスタマイズすることができます。古い実装では、`locales` および `options` 引数は無視され、使用されるロケールと整列順は完全に実装依存になります。 +## 構文 -

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

+```js +referenceStr.localeCompare(compareString) +referenceStr.localeCompare(compareString, locales) +referenceStr.localeCompare(compareString, locales, options) +``` -

構文

+### 引数 -
referenceStr.localeCompare(compareString[, locales[, options]])
+- `compareString` + - : この文字列と比較される文字列です。 +- `locales` および `options` -

引数

+ - : これらの引数は関数の動作をカスタマイズし、アプリケーションが使用すべき書式化の習慣を持つ言語を決めることができます。 `locales` および `options` 引数を無視する実装においては、使用されるロケールと返却される文字列の書式は完全に実装依存となります。 -
-
compareString
-
-

referenceStr と比較される文字列。

-
-
locales 、 options
-
-

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

+ これらの引数の詳細および使用方法については [`Intl.Collator()` コンストラクター](/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator)を参照してください。 -

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

-
-
+### 返値 -
{{page('/docs/Web/JavaScript/Reference/Global_Objects/Collator', 'Parameters')}}
+`referenceStr` が `compareString` より前に出現するものである場合は**負**の数です。 `referenceStr` が `compareString` より後に出現するものである場合は**正**の数です。等しい場合は `0` です。 -
-

戻り値

+## 解説 -

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

-
+`referenceStr` が `compareString` より前に来るか、後に来るか、あるいは等しいかを示す整数を返します。 -

説明

+- `referenceStr` が `compareString` より前に出現するものである場合は負の数 +- `referenceStr` が `compareString` より後に出現するものである場合は正の数 +- 等しい場合は `0` -

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

+> **Warning:** 返値が正確な `-1` または `1` であると思わないでください。 +> +> 結果の負の整数と正の整数は、ブラウザー間 (およびブラウザーのバージョン間) で異なります。これは W3C の仕様が負の値か正の値かとだけ指定しているためです。ブラウザーによっては `-2` や `2` を、あるいは他の負の値、正の値を返却するかもしれません。 - +## 性能 -
-

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

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

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

-
+## 例 -

パフォーマンス

+### `localeCompare()` の使用 -

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

+```js +// 文字 "a" は "c" は負の数になります +'a'.localeCompare('c'); // -2 や -1 (あるいはまた別の負の数) -

- -

localeCompare()を使う

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

配列のソート

+### 配列の並べ替え -

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

+`localeCompare()` で、大文字小文字の違いを無視した配列の並べ替えができます。 -
let items = ['réservé', 'Premier', 'Cliché', 'communiqué', 'café', 'Adieu'];
-items.sort( (a, b) => a.localeCompare(b, 'fr', {ignorePunctuation: true}));
+```js
+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 はすべてのプラウザでまだサポートされていません。

+`locales` と `options` の引数は、まだすべてのブラウザーで対応しているわけではありません。 -

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

+実装がこれらに対応しているか調べるには、引数 `"i"` (不正な言語タグが除外される要件) を使用して、例外 {{jsxref("RangeError")}} を調べてください。 -
function localeCompareSupportsLocales() {
+```js
+function localeCompareSupportsLocales() {
   try {
-    'a'.localeCompare​('b', 'i');
+    'foo'.localeCompare('bar', 'i');
   } catch (e) {
-    return e​.name === 'RangeError';
+    return e.name === 'RangeError';
   }
   return false;
 }
-
+``` -

localesを使う

+### `locales` の使用 -

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

+`localeCompare()` によって得られる結果は言語間で異なります。アプリケーションのユーザーインターフェイスで使用される言語の整列順を得るには、 `locales` 引数を使用してその言語 (そしてできればいくつかの代替言語) を指定していることを確かめて下さい。 -
console.log('ä'.localeCompare('z', 'de')); // 負数: ドイツ語で ä は a に分類される
-console.log('ä'.localeCompare('z', 'sv')); // 正数: スウェーデン語では ä は z の後になる
-
+```js +console.log('ä'.localeCompare('z', 'de')); // 負の数: ドイツ語で ä は a に分類される +console.log('ä'.localeCompare('z', 'sv')); // 正の数: スウェーデン語では ä は z の後になる +``` -

optionsを使う

+### `options` の使用 -

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

+`localeCompare()` によって得られる結果は、 `options` 引数を使用することによってカスタマイズできます。: -
// ドイツ語では ä の base letter は a
+```js
+// ドイツ語では ä の base letter は a
 console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0
 
-// スウェーデン語では ä と a は異なる base letters
-console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // a positive value
-
+// スウェーデン語では ä と a は base letter が異なる +console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // 正の値 +``` -

数字のソート

+### 数値の並べ替え -
// デフォルトでは "2" > "10"
-console.log("2".localeCompare("10")); // 1
+```js
+// 既定では "2" > "10"
+console.log("2".localeCompare("10")); // 1
 
-// オプションを使った数字
-console.log("2".localeCompare("10", undefined, {numeric: true})); // -1
+// options を使用した数値
+console.log("2".localeCompare("10", undefined, {numeric: true})); // -1
 
-// ロケールタグを使った数字
-console.log("2".localeCompare("10", "en-u-kn-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')}}
+{{Specifications}} -

ブラウザ実装状況

+## ブラウザーの互換性 -
-

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

-
+{{Compat}} -

関連情報

+## 関連情報 - +- {{jsxref("Global_Objects/Collator", "Intl.Collator")}} -- cgit v1.2.3-54-g00ecf