ES6-マップとセット
ES6は2つの新しいデータ構造を導入します- maps そして sets。それらについて詳しく学びましょう。
マップ
地図は注文されたコレクションです key-value pairs。マップはオブジェクトに似ています。ただし、マップとオブジェクトの間にはいくつかの違いがあります。これらは以下にリストされています-
| シニア番号 | オブジェクト | 地図 | 
|---|---|---|
| 1 | キーをオブジェクトタイプにすることはできません | キーはどのタイプでもかまいません | 
| 2 | キーは注文されていません | キーが注文されます | 
| 3 | 反復不可能 | 反復可能 | 
構文
Mapの構文を以下に示します-
let map = new Map([iterable])
let map = new Map() 
    例
次の例では、反復可能なコンストラクターを使用してマップを作成します-
<script>
   let andy = {ename:"Andrel"},
      varun = {ename:"Varun"},
      prijin = {ename:"Prijin"}
   let empJobs = new Map([
   [andy,'Software Architect'],
   [varun,'Developer']]
   );
   console.log(empJobs)
</script> 
    上記のコードの出力は次のとおりです-
{{…} => "Software Architect", {…} => "Developer"} 
    地図のサイズを確認する
sizeプロパティを使用して、マップに格納されている値の数を決定できます。
構文
マップのサイズをチェックするための構文を以下に示します-
map_name.size 
    例
<script>
   let daysMap = new Map();
   daysMap.set('1', 'Monday');
   daysMap.set('2', 'Tuesday');
   daysMap.set('3', 'Wednesday');
   console.log(daysMap.size);
</script> 
    上記のコードの出力は次のとおりです-
3 
    以下は、マップを操作するために使用できるいくつかの一般的な方法です-
| シニア番号 | オブジェクトとマップ | 
|---|---|
| 1 |  set(key、value)  キーと値をマップに追加します  |  
      
| 2 |  get(key)  キーが一致した場合に値を返します  |  
      
| 3 |  has(key)  指定されたキーを持つ要素が存在する場合はtrueを返します。それ以外の場合はfalseを返します  |  
      
| 4 |  keys()  マップオブジェクトの各要素のキーを含むイテレータを返します  |  
      
| 5 |  values()  マップオブジェクトの各要素の値を含むイテレータを返します  |  
      
| 6 |  エントリ()  マップ内の各要素のキーと値のペアを含むイテレータを返します  |  
      
| 7 |  delete(key)  指定された要素をMapオブジェクトから削除します  |  
      
WeakMap
WeakMapは小さいです subset of map。キーは弱く参照されるため、非プリミティブのみにすることができます。オブジェクトキーへの参照がない場合、ガベージコレクションの対象になります。
- 反復不可能
 - すべてのキーはオブジェクトタイプです
 
キーに参照がない場合、WeakMapはガベージコレクションを許可します。
構文
WeakMapの構文は次のとおりです-
new WeakMap([iterable]) 
    例1
<script>
   let emp = new WeakMap();
   emp.set(10,'Sachin');// TypeError as keys should be object
</script> 
    例2
<script>
   let empMap = new WeakMap();
   // emp.set(10,'Sachin');// Error as keys should be object
   let e1= {ename:'Kiran'},
      e2 = {ename:'Kannan'},
      e3 = {ename:'Mohtashim'}
   empMap.set(e1,1001);
   empMap.set(e2,1002);
   empMap.set(e3,1003);
   console.log(empMap)
   console.log(empMap.get(e2))
   console.log(empMap.has(e2))
   empMap.delete(e1)
   console.log(empMap)
</script> 
    上記のコードの出力は以下のとおりです-
{{…} => 1002, {…} => 1003, {…} => 1001}
1002
true
{{…} => 1002, {…} => 1003} 
    セットする
セットは、一意の値の順序付けられていないコレクションです。このデータ構造には、プリミティブタイプとオブジェクトタイプの値を含めることができます。
構文
Setの構文を以下に示します-
new Set([iterable])
new Set() 
    例
<script>
   let names = new Set(['A','B','C','D']);
   console.log(names)
</script> 
    上記のコードの出力は次のとおりです-
{"A", "B", "C", "D"} 
    セットのサイズを確認する
Setオブジェクトのsizeプロパティを使用して、Set内の要素の数を照会できます。
構文
セットのサイズをチェックするための構文を以下に示します-
set.size 
    例
<script>
   let names = new Set(['A','B','C','D']);
   console.log(names.size)
</script> 
    上記のコードの出力は次のとおりです-
4 
    セットの反復
使用できます forEach そして for..ofセットを反復処理するためのループ。これを以下の例に示します-
例
<script>
   let names= new Set(['A','B','C','D']);
   //iterate using forEach
   console.log('forEach')
   names.forEach(n=>console.log(n))
   
   console.log('for of..')
   
   //iterate using for..of
   for(let n of names){
      console.log(n)
   }
</script> 
    上記のコードの出力は以下のとおりです-
forEach
A
B
C
D
for of..
A
B
C
D 
    次の方法を使用して、セットを操作できます。
| シニア番号 | オブジェクトとマップ | 
|---|---|
| 1 |  add(element)  セットに要素を追加します  |  
      
| 2 |  has(要素)  要素が見つかった場合はtrueを返します。それ以外の場合はfalseを返します  |  
      
| 3 |  delete(element)  セットから特定の要素を削除します  |  
      
| 4 |  晴れ()  セットからすべての要素をクリアします  |  
      
WeakSet
Weaksetはオブジェクトを弱く保持します。つまり、WeakSetに格納されているオブジェクトは、参照されていない場合、ガベージコレクションの対象になります。WeakSetsは反復可能ではなく、get 方法。
<script>
   let e1 = {ename:'A'}
   let e2 ={ename:'B'}
   let e3 ={ename:'C'}
   let emps = new WeakSet();
   emps.add(e1);
   emps.add(e2)
   .add(e3);
   console.log(emps)
   console.log(emps.has(e1))
   emps.delete(e1);
   console.log(emps)
</script> 
    上記のコードの出力は以下のようになります-
WeakSet {{…}, {…}, {…}}
true
WeakSet {{…}, {…}}