set&&Mapデータ構造

2175 ワード

1.ES 6は、新しいデータ構造Setを提供する。配列に似ていますが、メンバーの値は全部唯一で、重複した値はありません。javaと同じ定義のデータ構造
const set = new Set();
[1,3,4,5,55,4,4,3,4,5].forEach((value)=>{
  set.add(value)
})
for(let v of set){
  console.log(v)
}
//1 3 4 5 55
配列初期化を受け入れる
const set = new Set([1,2,3,4,3,3,4,5,5,55,3]);
console.log([...set])// [1, 2, 3, 4, 5, 55]
Setの例の属性および方法Set構造の例には、以下のような属性がある。
Set.prototype.com nstructor:コンストラクタはデフォルトでSet関数です。Set.prototype.size:Setインスタンスのメンバー総数を返します。Setの例の方法は、2つの大きなクラスに分けられている。操作方法(データを操作するための)と、メンバを巡回するためのエルゴード方法。まず四つの操作方法を紹介します。
add(value):値を追加して、Set構造自体に戻ります。delete(value):ある値を削除し、ブール値を返します。削除が成功したかどうかを表します。has(value):Setのメンバーであるかどうかを示すブール値を返します。clear():全メンバーをクリアし、戻り値がない。
const set = new Set([1,2,3,4,3,3,4,5,5,55,3]);
console.log(set.delete(1));
console.log([...set]);//[2,3,4,5,55]
console.log(set.has(2)) ;//true
set.clear();
console.log([...set])//[]
Aray.from法はSet構造を配列に変えることができる。
const set = new Set([1,2,3,4,3,3,4,5,5,55,3]);
const array = Array.from(set)
console.log(array)
WeakSet:WeakSet構造はSetと同様であり、重複しない値のセットでもある。しかし、Setとは2つの違いがあります。まず、WeakSetのメンバーは対象でしかなく、他のタイプの値ではない。次に、WeakSetの対象は弱い参照である。つまり、ゴミ回収メカニズムはWeakSetの対象に対する参照を考慮しない。つまり、他の対象がその対象を引用しない場合、ゴミ回収メカニズムは自動的に対象が占有しているメモリを回収し、対象がまだWeakSetに存在することを考慮しない。WeakSet.prototype.add:WeakSetのインスタンスに新しいメンバーを追加します。WeakSet.prototype.delete:WeakSetのインスタンスの指定メンバーをクリアします。WeakSet.prototype.has:ある値がWeakSetの例にあるかどうかを示すブール値を返します。WeakSetが遍歴できないのは、メンバーが弱いからです。いつでも消えるかもしれません。システムを通してメンバーの存在を保証できません。
Mapは、Objectよりも適切なキーのデータ構造です。
let map = new Map()
  .set('a', '1')
  .set('b', '2b')
  .set('c', '3');
 
console.log([...map.keys()])
console.log([...map.values()]) 
console.log(map.has('a'))
map.delete('a');
console.log(map.get('a'))
for(let value of map.values())
  console.log(value)
for(let item of map.entries()){
  console.log(item[0]+":"+item[1])
}
map.clear();
console.log([...map])
WeakMapはMapと同様の構造であり、キーペアを生成するための集合でもある。まず、WeakMapは対象をキー名(nullを除く)とし、他のタイプの値をキー名として受け入れません。次に、WeakMapのキーが指す対象は、ゴミ回収メカニズムに含まれません。