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"}