Set、Map、WeakSet、WeakMapの違い

1.セット
は配列に似ていますが、メンバーの値は一意であり、重複する値はありません。

Set自体はコンストラクターであり、Setデータ構造を生成するために使用されます。

配列の重複排除と文字列の重複排除:

[...new Set(array)];

 Array.from(new Set(array));
 
[...new Set('ababbc')].join('')
// "abc"

セットに値を追加する場合、型変換は行われません。

Array.fromメソッドは、Set構造体を配列に変換できます。

const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);

Setを使用すると、Union、Intersect、Differenceを簡単に実装できます。

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);

// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}

// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}

// (a 相对于 b 的)差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}

2. WeakSet
構造はSetに似ており、一意の値のコレクションでもあります。ただし、Setとは2つの違いがあります。
まず、WeakSetのメンバーはオブジェクトのみであり、他のタイプの値ではありません。
メンバーは弱参照であり、ガベージコレクションメカニズムによってリサイクルでき、DOMノードを保存するために使用でき、メモリリークを引き起こすのは簡単で
はなく、トラバースできません。メソッドには、追加、削除、

3.マップ
は基本的に、キーと値のペアのコレクションです。コレクションと同様に、マップを
トラバースでき、さまざまなデータ形式でさまざまな方法で変換できます。

第4に、WeakMap
はオブジェクトをキー(nullを除く)としてのみ受け入れ、他のタイプの値をキーとして受け入れません。
キーは弱い参照です。キー値は任意です。キー名が指すオブジェクトはガベージコレクションできます。 。現時点では、キー名は無効であり、
トラバースできません。メソッドはget、set、has、deleteです。

おすすめ

転載: blog.csdn.net/Beth__hui/article/details/109367917