From b88daa8438be8b888d5cbd8b9c9b5b2564763dc1 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Wed, 2 Oct 2024 22:58:51 +0900 Subject: [PATCH 1/2] =?UTF-8?q?2024/07/26=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5=E3=81=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reference/global_objects/map/index.md | 68 ++++++++++--------- .../map/symbol.species/index.md | 13 ++-- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/files/ja/web/javascript/reference/global_objects/map/index.md b/files/ja/web/javascript/reference/global_objects/map/index.md index b0cf10953233ee..09f6dc71355385 100644 --- a/files/ja/web/javascript/reference/global_objects/map/index.md +++ b/files/ja/web/javascript/reference/global_objects/map/index.md @@ -2,12 +2,13 @@ title: Map slug: Web/JavaScript/Reference/Global_Objects/Map l10n: - sourceCommit: 2b87789e97bfcdf33989e3b1504aec58c2106ba6 + sourceCommit: 8421c0cd94fa5aa237c833ac6d24885edbc7d721 --- {{JSRef}} -**`Map`** オブジェクトはキーと値のペアを保持し、キーが最初に挿入された順序を覚えています。キーや値には任意の値(オブジェクトと{{glossary("Primitive", "プリミティブ値")}})を使用することができます。 +**`Map`** オブジェクトはキーと値のペアを保持し、キーが最初に挿入された順序を覚えています。 +キーや値には任意の値(オブジェクトと{{Glossary("Primitive", "プリミティブ値")}})を使用することができます。 {{EmbedInteractiveExample("pages/js/map.html", "taller")}} @@ -91,14 +92,7 @@ l10n:

この順序は ECMAScript 2015 で初めて自身のプロパティに対してのみ定義されましたが、 ECMAScript 2020 では継承されたプロパティに対しても同様に順序が定義されています。 - OrdinaryOwnPropertyKeys - と - EnumerateObjectProperties - の抽象指定操作を参照してください。しかし、オブジェクトのプロパティがすべて反復処理される単一の単一のメカニズムはないことに注意してください。 + しかし、オブジェクトのプロパティがすべて反復処理される単一の単一のメカニズムはないことに注意してください。 ({{jsxref("Statements/for...in", "for-in")}} は列挙可能な文字列キーのプロパティのみを含む、 {{jsxref("Object.keys")}} は自分自身の列挙可能な文字列キーのプロパティのみを含む、 {{jsxref("Object.getOwnPropertyNames")}} は列挙不可能な場合でも自分自身の文字列キーのプロパティを含む、 {{jsxref("Object.getOwnPropertySymbols")}} は、 Symbol キーを持つプロパティに対しても同じことを行う、など。)

@@ -225,9 +219,9 @@ console.log(contacts.size); // 1 **ブラウザーの `Map` 風オブジェクト** (または「Map 風オブジェクト」) は、多くの点で `Map` のようにふるまう [Web API](/ja/docs/Web/API) のインターフェイスです。 -`Map` と同様に、エントリーはオブジェクトに追加されたのと同じ順番で走査できます。 +`Map` と同様に、項目はオブジェクトに追加されたのと同じ順番で走査できます。 また、`Map` 風オブジェクトと `Map` は同じ名前で同じ挙動のプロパティおよびメソッドを持ちます。 -しかし、`Map` と違い、各エントリーのキーと値には事前に定義された特定の型しか使用できません。 +しかし、`Map` と違い、各項目のキーと値には事前に定義された特定の型しか使用できません。 使用可能な型は、仕様書の IDL 定義で設定されています。 たとえば、{{domxref("RTCStatsReport")}} はキーには文字列を、値にはオブジェクトを用いなければならない `Map` 風オブジェクトです。 @@ -241,7 +235,7 @@ interface RTCStatsReport { `Map` 風オブジェクトは読み取り専用のことも、読み書き可能なこともあります。(上の IDL の `readonly` キーワードに注目してください) -- 読み取り専用の `Map` 風オブジェクトは、プロパティ [`size`](#map.prototype.size) と、メソッド [`entries()`](#map.prototype.entries)、[`forEach()`](#map.prototype.foreach)、[`get()`](#map.prototype.get)、[`has()`](#map.prototype.has)、[`keys()`](#map.prototype.keys)、[`values()`](#map.prototype.values)、[`@@iterator`](#map.prototypeiterator) を持ちます。 +- 読み取り専用の `Map` 風オブジェクトは、プロパティ [`size`](#map.prototype.size) と、メソッド [`entries()`](#map.prototype.entries)、[`forEach()`](#map.prototype.foreach)、[`get()`](#map.prototype.get)、[`has()`](#map.prototype.has)、[`keys()`](#map.prototype.keys)、[`values()`](#map.prototype.values)、[`Symbol.iterator`](#map.prototypeiterator) を持ちます。 - 書き込み可能な `Map` 風オブジェクトは、これに加えてメソッド [`clear()`](#map.prototype.clear)、[`delete()`](#map.prototype.delete)、[`set()`](#map.prototype.set) を持ちます。 これらのメソッドとプロパティは、キーと値の型の制約を除いて、`Map` の対応するエンティティと同様にふるまいます。 @@ -262,38 +256,47 @@ interface RTCStatsReport { ## 静的プロパティ -- {{jsxref("Map.@@species", "get Map[@@species]")}} +- [`Map[Symbol.species]`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.species) - : 派生クラスを生成するためのコンストラクター関数です。 +## 静的メソッド + +- {{jsxref("Map.groupBy()")}} + - : 与えられた反復可能な要素を、与えられたコールバック関数から返された値を使用してグループ化します。最後に返される `Map` は、テスト関数から得られた一意の値をキーとして使用しており、各グループの要素の配列を取得するために使用できます。 + ## インスタンスプロパティ -- `Map.prototype[@@toStringTag]` - - : [`@@toStringTag`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) プロパティの初期値は文字列 `"Map"` です。このプロパティは {{jsxref("Object.prototype.toString()")}} で使用されます。 +これらのプロパティは `Map.prototype` で定義され、すべての `Map` インスタンスで共有されます。 + +- {{jsxref("Object/constructor", "Map.prototype.constructor")}} + - : このインスタンスオブジェクトを作成したコンストラクター関数。`Map` インスタンスの場合、初期値は {{jsxref("Map/Map", "Map")}} コンストラクターです。 - {{jsxref("Map.prototype.size")}} - : `Map` オブジェクトの中のキーと値のペアの数を返します。 +- `Map.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) プロパティの初期値は文字列 `"Map"` です。このプロパティは {{jsxref("Object.prototype.toString()")}} で使用されます。 ## インスタンスメソッド - {{jsxref("Map.prototype.clear()")}} - : `Map` オブジェクトからすべてのキーと値のペアを削除します。 - {{jsxref("Map.prototype.delete()")}} - - : `Map` オブジェクトに要素が存在し、削除された場合は `true` を返します。要素が存在しなければ `false` を返します。その後では `Map.prototype.has(key)` が `false` を返すようになります。 + - : `Map` オブジェクトに要素が存在し、削除された場合は `true` を返します。要素が存在しなければ `false` を返します。その後では `Map.has(key)` が `false` を返すようになります。 +- {{jsxref("Map.prototype.entries()")}} + - : `Map` オブジェクトの各要素の `[key, value]` からなる 2 つの要素の配列を挿入順で含む新しいイテレーターオブジェクトを返します。 +- {{jsxref("Map.prototype.forEach()")}} + - : `Map` オブジェクトに存在するキーと値のペアの数だけ、挿入順に `callbackFn` を呼び出します。 `thisArg` 引数が `forEach` に渡された場合、各コールバックの `this` 値として使用されます。 - {{jsxref("Map.prototype.get()")}} - : `key` で指定されたキーに結び付けられた値を返します。存在しない場合は `undefined` を返します。 - {{jsxref("Map.prototype.has()")}} - : 論理値で、渡されたキーに結び付けられた要素が `Map` オブジェクト内に存在するかどうかを返します。 -- {{jsxref("Map.prototype.set()")}} - - : `Map` オブジェクト内の `key` で指定されたキーの値を `value` に設定します。その `Map` オブジェクトを返します。 -- {{jsxref("Map/@@iterator", "Map.prototype[@@iterator]()")}} - - : `Map` オブジェクト内の各要素の `[key, value] の配列` が挿入順で含む、新しいイテレーターオブジェクトを返します。 - {{jsxref("Map.prototype.keys()")}} - : `Map` オブジェクト内の各要素のキーが挿入順で含む、新しいイテレーターオブジェクトを返します。 +- {{jsxref("Map.prototype.set()")}} + - : `Map` オブジェクト内の渡されたキーを値に設定します。その `Map` オブジェクトを返します。 - {{jsxref("Map.prototype.values()")}} - : `Map` オブジェクト内の各要素の値が挿入順で含む、新しいイテレーターオブジェクトを返します。 -- {{jsxref("Map.prototype.entries()")}} - - : `Map` オブジェクト内の要素に対して挿入順にすべての要素の `[key, value]` の配列を含む、新しいイテレーターオブジェクトを返します。 -- {{jsxref("Map.prototype.forEach()")}} - - : `callbackFn` を、 `Map` オブジェクトに存在するそれぞれのキーと値のペアに対して 1 回ずつ、挿入順に呼び出します。 `thisArg` 引数が `forEach` に与えられた場合は、それぞれのコールバックでこれを `this` の値として使用します。 +- [`Map.prototype[Symbol.iterator]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator) + - : `Map` オブジェクト内の各要素の `[key, value] の配列` が挿入順で含む、新しいイテレーターオブジェクトを返します。 ## 例 @@ -302,9 +305,9 @@ interface RTCStatsReport { ```js const myMap = new Map(); -const keyString = '文字列' +const keyString = "文字列"; const keyObj = {}; -const keyFunc function() {}; +const keyFunc = function () {}; // 値を設定する myMap.set(keyString, "'文字列' と結び付けられた値"); @@ -320,7 +323,7 @@ console.log(myMap.get(keyFunc)); // "keyFunc と結び付けられた値" console.log(myMap.get('文字列')); // "'文字列' と結び付けられた値"。 keyString === '文字列' であるため console.log(myMap.get({})); // undefined, keyObj !== {} であるため -console.log(myMap.get(function() {})); // undefined, keyFunc !== function () {} であるため +console.log(myMap.get(function () {})); // undefined, keyFunc !== function () {} であるため ``` ### NaN を Map のキーとして使用 @@ -375,7 +378,7 @@ for (const [key, value] of myMap.entries()) { ### forEach() で Map を反復処理 -マップは {{jsxref("Map.prototype.forEach", "forEach()")}} メソッドを使用して反復できます。 +マップは {{jsxref("Map/forEach", "forEach()")}} メソッドを使用して反復できます。 ```js myMap.forEach((value, key) => { @@ -396,7 +399,7 @@ const kvArray = [ // 通常の Map コンストラクターを使って、キーと値の 2 次元配列をマップに変換する const myMap = new Map(kvArray); -console.log(myMap.get("キー1")); // "値1" を返す +console.log(myMap.get("キー1")); // "値1" // 展開演算子を使って、マップをキー・値の 2 次元配列に変換する console.log(Array.from(myMap)); // kvArray とまったく同じ Array を表示する @@ -421,7 +424,8 @@ console.log(clone.get(1)); // one console.log(original === clone); // false (useful for shallow comparison) ``` -> **メモ:** *データ自身*は複製されないことに注意しておいてください。 +> [!NOTE] +> データ自身は複製されないことに注意しておいてください。 マップはキーの固有性を保持しながら混合可能です。 @@ -478,7 +482,7 @@ console.log(merged.get(3)); // three ## 関連情報 -- `Map` のポリフィルは [`core-js`](https://github.com/zloirock/core-js#map) で利用できます +- [`Map` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#map) - {{jsxref("Set")}} - {{jsxref("WeakMap")}} - {{jsxref("WeakSet")}} diff --git a/files/ja/web/javascript/reference/global_objects/map/symbol.species/index.md b/files/ja/web/javascript/reference/global_objects/map/symbol.species/index.md index 5e43d0879187b0..bf3f53afa022c4 100644 --- a/files/ja/web/javascript/reference/global_objects/map/symbol.species/index.md +++ b/files/ja/web/javascript/reference/global_objects/map/symbol.species/index.md @@ -1,14 +1,13 @@ --- -title: get Map[@@species] +title: Map[Symbol.species] slug: Web/JavaScript/Reference/Global_Objects/Map/Symbol.species -original_slug: Web/JavaScript/Reference/Global_Objects/Map/@@species l10n: - sourceCommit: 8183cfa3a25c440ca4ff0f39fe941871ed495a7b + sourceCommit: 8421c0cd94fa5aa237c833ac6d24885edbc7d721 --- {{JSRef}} -**`Map[@@species]`** は静的アクセサープロパティで、 `Map` オブジェクトをコピーする方法を示す未使用のアクセサープロパティです。 +**`Map[Symbol.species]`** は静的アクセサープロパティで、 `Map` オブジェクトをコピーする方法を示す未使用のアクセサープロパティです。 ## 構文 @@ -18,11 +17,11 @@ Map[Symbol.species] ### 返値 -`get @@species` が呼び出されたコンストラクター (`this`) の値です。返さる値は、 `Map` インスタンスのコピーを構築するために使用されます。 +`get [Symbol.species]` が呼び出されたコンストラクター (`this`) の値です。返される値は、`Map` インスタンスのコピーを構築するために使用されます。 ## 解説 -species アクセサープロパティは `Map` オブジェクトのデフォルトコンストラクターを返します。サブクラスのコンストラクターは、コンストラクターに代入して変更することによりオーバーライドすることができます。 +species アクセサープロパティは `Map` オブジェクトの既定のコンストラクターを返します。サブクラスのコンストラクターは、コンストラクターに代入して変更することによりオーバーライドすることができます。 > [!NOTE] > このプロパティは現在、どの `Map` のメソッドからも使われていません。 @@ -31,7 +30,7 @@ species アクセサープロパティは `Map` オブジェクトのデフォ ### 通常のオブジェクトの species -species プロパティはデフォルトコンストラクター関数を返しますので、 `Map` オブジェクトには `Map` コンストラクターを返します。 +species プロパティは既定のコンストラクター関数を返しますので、`Map` オブジェクトには `Map` コンストラクターを返します。 ```js Map[Symbol.species]; // function Map() From 2443c1496fb7a681ced8eac30c382809f15eef38 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Thu, 3 Oct 2024 00:14:52 +0900 Subject: [PATCH 2/2] Update files/ja/web/javascript/reference/global_objects/map/index.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- files/ja/web/javascript/reference/global_objects/map/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/ja/web/javascript/reference/global_objects/map/index.md b/files/ja/web/javascript/reference/global_objects/map/index.md index 09f6dc71355385..ac5427cbdfb4f5 100644 --- a/files/ja/web/javascript/reference/global_objects/map/index.md +++ b/files/ja/web/javascript/reference/global_objects/map/index.md @@ -321,7 +321,7 @@ console.log(myMap.get(keyString)); // "'文字列' と結び付けられた値" console.log(myMap.get(keyObj)); // "keyObj と結び付けられた値" console.log(myMap.get(keyFunc)); // "keyFunc と結び付けられた値" -console.log(myMap.get('文字列')); // "'文字列' と結び付けられた値"。 keyString === '文字列' であるため +console.log(myMap.get("文字列")); // "'文字列' と結び付けられた値"。 keyString === '文字列' であるため console.log(myMap.get({})); // undefined, keyObj !== {} であるため console.log(myMap.get(function () {})); // undefined, keyFunc !== function () {} であるため ```