ES6 は新しいデータ構造化 Set を追加します。これは Java の Set と同様、重複した要素を保存しません。 Set はクラスとして実装されており、使用する前に新規にする必要があります。
var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) s1.add(1) var s2 = new Set() s2.add('a') s2.add('a') // 输出1,2, 3 for (var i of s1 ) { console.log(i) } // 输出a for (var i of s2 ) { console.log(i) }
Set の add メソッドを使用して上記の要素を追加すると、追加は保存されません。
Set コンストラクターは配列をパラメーターとして受け入れることもできます
var s3 = new Set([1,2,3,1]) s3.size // 3
繰り返しの数字 1 がまだ入力されていないことがわかります。さらに、セットの長さを取得するには、長さではなくサイズを使用します。
{} または [] の場合、それらは 2 つの同じオブジェクトであることに注意してください
var s4 = new Set() s4.add({}) s4.add({}) s4.size // 2
1.トラバースセット(4本用)
var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) // 输出1,2, 3 for (var i of s1) { console.log(i) }
2. セットを配列に変換します
var s1 = new Set() s1.add(1) s1.add(2) // toArray var a1 = Array.from(s1) Array.isArray(a1) // true // or var a1 = [...new Set(s1)]
3. Set を使用して配列を重複排除します
function distinct(arr) { return Array.from(new Set(arr)) // return [...new Set(arr)] }
として
セットの属性
コンストラクター
サイズ
メソッドの設定
has(val) は要素が存在するかどうかを決定します
add(val) 要素
を追加します
delete(val) 要素を削除
Clear はすべての要素を削除します
キー
値
エントリー
forEach は要素を横断します
地図
フィルター
4. ウィークセット
WeakSet と Set は重複した要素を保存しませんが、いくつかの違いがあります
1. オブジェクト型要素のみを保存します
ws = new WeakSet() ws.add(1)
FF で報告されるエラーは次のとおりです
2. add/delete/clear/has の 3 つのメソッドのみがあり、これらを横断することはできません。また、size 属性などはありません。
ws = new WeakSet() ws.size // undefined ws.forEach // undefined
MDN の説明
WeakSet オブジェクトに格納されているオブジェクト値は弱参照されており、他の変数や属性がそのオブジェクト値を参照していない場合、そのオブジェクト値はガベージ コレクションされます。たとえば、WeakSet オブジェクトは列挙できません。含まれるすべての要素を取得する方法はありません
WeakSet は主に DOM ノードを保存するために使用され、これらのノードがドキュメントから削除されてもメモリ リークは発生しません。
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。