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
は何を返しますか。
undefined
100
"My string"