blog

ES6 Essentials 06-セットとマップ

Set は配列に似たデータ構造で、メンバは一意であり、重複する値はありません。 Set 自体は、Set データ構造を生成するコンストラクタです。 add メソッドを使用してセットに値を追加すると、重複...

Mar 11, 2020 · 3 min. read
Share this

1.集合 set: 繰り返しではない値の順序付きリストを表します。

  • セットは配列に似たデータ構造で、メンバはすべて一意で、重複する値はありません。
  • Set自体は、Setデータ構造を生成するコンストラクタです。
  • add メソッドを使用して set に値を追加すると、重複した値が再び追加されることはありません。

セットコレクションとは何かを見てみましょう。

let set = new Set(); console.log(set); console.log(typeof(set)); // object

重複する値を追加できない

let set = new Set(); set.add(2); set.add('4'); set.add('4'); console.log(set) // Set(2) {2, "4"} // 値が集合に含まれるかどうかをチェックする console.log(set.has('4')); true console.log(set.size); // 2
  • 値がセット内にあるかどうかをチェックし、ブール値を返します。
  • size():セットの長さを設定し、メンバーの総数を返します。
  • 値を追加し、Set 構造体自体を返します。
  • delete: 値を削除し、削除が成功したかどうかをブール値で返します。

2.配列とSetの併用:

連結:

let a =new Set([1,2,3,4]) ; let b =new Set([2,3,4]); let unit = new Set([...a,...b]); console.log(Array.from(unit)); //[1,2,3,4]

交差:

let a =new Set([1,2,3,4]) ; let b =new Set([2,3,4]); let intersection = new Set([...a].filter(x=>b.has(x))); console.log(Array.from(intersection));//[2,3,4];

相違点:

let a =new Set([1,2,3,4]) ; let b =new Set([2,3,4]); //setデータ構造はforEachメソッドを使って走査できる。 let difference = new Set([...a].filter(x => !b.has(x))); console.log(Array.from(difference)) //[1]
  • keys、values、entries、forEachの4つのトラバーサルメソッドが設定可能です。

セットデータを配列に変換

// 集合を配列に変換する let set2 = new Set([1, 2, 3, 3, 3, 4]); // 1.拡張演算子 let arr = [...set2] console.log(arr);//[1,2,3,4] // 2.Array.from(set2) let arr1 = Array.from(set2); console.log(arr1)// [1,2,3,4]

セット内のオブジェクトへの参照は解放できません:

// 1.setMap内のオブジェクトへの参照は解放できない。 let set3 = new Set(),obj = {}; set3.add(obj); // 現在のリソースを解放する obj = null; //と書かれているが、実際には機能しない。 console.log(set3);

3.マップ:型は、任意の型のキーと値を持つ、キーと値のペアの順序付きリストです。

  • jsオブジェクトは基本的にキーと値のペアのコレクションですが、キー名として文字列しか受け付けません。
  • オブジェクト: 文字列 - 値
  • Map ---
  • マップのキーはメモリ・アドレスにバインドされており、メモリ・アドレスが異なる場合は常に2つのキーとして扱われます。

Map:

  • Map はコンストラクタのパラメータとして配列を受け取ることができ、配列のメンバはキーと値のペアの配列です。

    var map = new Map([["name"," "],["friends"," "]]); map.get("name")//" "
// Map型はキーと値のペアの順序付きリストで、キーと値は任意の型である。 let map = new Map(); map.set('name',' '); map.set('age',20); console.log(map.get('name')); // console.log(map); //Map(2) {"name" => " ", "age" => 20} map.has('name');//true map.delete('name'); map.clear(); //すべてをきれいにする。 console.log(map); //Map(0) map.set(['a',[1,2,3]],'hello'); //配列全体をキーとし、対応する値をhelloとする。 console.log(map); //Map(1) {Array(2) => "hello"}
Read next

Spring "ブート自動アセンブリーの原理

Java開発者の出現は福音であると言うことができる、それは大幅に設定を簡素化し、重いプロジェクト環境から、書き出すように設定ファイルの様々なを構築するために、より多くのビジネスロジックに集中。プロジェクトに基づいて、あなただけの行にmavenのpomを介して必要なコンポーネントを導入する必要があり、春...

Mar 10, 2020 · 5 min read