キー付きコレクション

Key-Value ペアの格納にはオブジェクト リテラルを、格納には配列を使用できます。 反復可能な値のコレクションです。ES6 では特殊なデータ構造も導入されている 2 つのオプションが用意されています。Key-Value ペアのマップ、 できます。

地図

Map は、情報を Key-Value ペアとして格納する、反復可能なデータ構造です。 オブジェクト リテラルに似ています。オブジェクト リテラルとは異なり、Map では両方の値を使用できる 任意のデータ型を格納できます。順序要素は Map に追加されます。 保持されるということです。

地図を作成するには、Map() コンストラクタを使用します。

const myMap = new Map();

myMap;
> Map(0)

配列(または を含む、任意のイテレータ オブジェクト) 配列のような 2 つの要素で構成されるオブジェクトです。それぞれの最初の要素は、 2 要素データ構造がキーになり、2 要素目が値になります。 関連付けられています最も簡単な形式は、実質的には 各要素は、2 つの要素からなる配列です。 マップに追加する要素の値です。

const myMap = new Map([
    [ "myKey", "A string value" ],
    [ "mySecondKey", 500 ],
    [ "myThirdKey", true ]
]);

myMap;
> Map(3) {'myKey' => 'A string value', 'mySecondKey' => 500, 'myThirdKey' => true}

ここでも Map オブジェクトはオブジェクト リテラルと異なり、両方の値が and keys には、任意のデータ型と値を指定できます。

const notAFunction = () => console.log( "function" );
const myMap = new Map([
  [ null, 0 ],
  [ false, "This is false" ],
  [ undefined, "No defined value" ],
  [ NaN, "Not a number" ]
]);

myMap;
> Map(4) {null => 0, false => 'This is false', undefined => 'No defined value', NaN => 'Not a number'}

地図要素を取得、設定、削除するには、Map から継承されたメソッドを使用します。 コンストラクタ:

const myMap = new Map();

myMap;
> Map(0)

myMap.set( "myKey", "My value." );

myMap.has( "myKey" );
> true

myMap.get( "myKey" );
"My value."

myMap.delete( "myKey" );

myMap;
> Map(0)

マップ内のキーは一意です。つまり、同じキーを設定すると、 Key-Value ペアを返します。

const myMap = new Map([ [ "myKey", "A string value" ] ]);

myMap.set( "myKey", 500 );

myMap;
> Map(1) {'myKey' => 500}

オブジェクトの場合と同様に、const で宣言された変数に Map を代入し、 そのマップを変更します。ただし、const の他のユースケースと同様に、 次のように、変数自体を変更または削除します。

const myMap = new Map();
myMap.set( "myKey", "A string value" );

myMap;
> Map(1) {'myKey' => 500}

WeakMap

WeakMap は「弱い」状態を保持する参照 オブジェクトまたはシンボルへの参照である必要があります グローバル Symbol レジストリに追加されていないエントリをスキャンできます。

WeakMap を作成するには、WeakMap() コンストラクタを使用します。

const myWeakMap = new WeakMap();

myWeakMap;
> WeakMap(0)

WeakMap の構文は Map と類似していますが、 iterable であり、 オブジェクトまたはシンボル以外の値をキーに指定すると、構文エラーが発生します。「いいえ」の場合 キーへの参照が存在します そのオブジェクトまたはシンボル、および WeakMap はどちらもガベージ コレクションの対象となります。

これにより、オブジェクトに関連付けられたメタデータを WeakMap。オブジェクトへの参照をキーとして使用します。他の参照先がない場合 削除されたオブジェクトはメモリから削除され、 削除されます。

セット

Set は、配列に似た一意の値の反復可能なコレクションです。 Set には一意の値のみを含めることができます。Map の場合と同様、 Set は、要素が追加された順序を保持します。

Set を作成するには、Set() コンストラクタを使用します。

const mySet = new Set();

mySet;
> Set []

配列リテラルから Set を作成することもできます。

const mySet = new Set([ 1, 2, 3 ]);

mySet;
> Set(3) [ 1, 2, 3 ]

Set では要素の重複が許可されていないため、Set が 同じ値の複数のインスタンスを含む配列では、最初の 使用します。

const mySet = new Set([ 1, 2, 3, 2 ]);

mySet;
> Set(3) [ 1, 2, 3 ]

Set の要素を追加または削除するには、Set から継承されたメソッドを使用します。 コンストラクタがあります。これらのメソッドは、要素の値に基づいて要素に作用します。 呼び出します。

const mySet = new Set();

mySet.add( "My value." );

mySet;
> Set [ "My value." ]

mySet.has( "My value." );
> true

mySet.delete( "My value." );

mySet;
> Set []

セットはインデックスに登録されたコレクションではなく、 Set 内の要素は繰り返し反復処理されます。 挿入順に表示されます。セットに重複する要素値を追加しようとすると、 スキップされ、元の広告掲載オーダーはそのまま保持されます。

const mySet = new Set([ 1, 2, 3 ]);

mySet;
> Set(3) [ 1, 2, 3 ]

mySet.add( 2 );
> Set(3) [ 1, 2, 3 ]

Set から配列を作成するには、Array.from() メソッドかスプレッドを使用します。 構文:

const mySet = new Set([ 1, 2, 3 ]);
const myArray = Array.from( mySet );

myArray;
> Array(3) [ 1, 2, 3 ]

[ ...mySet ];
> Array(3) [ 1, 2, 3 ]

WeakSet

WeakSet は、ガベージ コレクションが可能な値のみを含むセットです。 たとえばオブジェクトやシンボルなどの名前で グローバル Symbol レジストリに追加されていないエントリをスキャンできます。

WeakSet を作成するには、WeakSet() コンストラクタを使用します。

const myWeakSet = new WeakSet();

myWeakSet;
> WeakSet []

WeakSet の構文は Set に似ていますが、WeakSet の構文は iterable であり、 オブジェクトまたはシンボル以外の値を指定すると、構文エラーが発生します。WeakMap と同様に 他の参照ファイルがない場合、 WeakSet によって参照されている値が存在する場合、その値は ガベージ コレクション

これにより、単一の反復可能なコレクションを集約する、 関連オブジェクト。 WeakSet の場合、関連する要素も WeakSet から削除されます。

理解度をチェックする

条件:

        const myMap = new Map([ [ "myKey", "My string" ] ]);
        myMap.set( "myKey", 100 );
      

myMap は何を返しますか。

100
"My string"
undefined