ECMAScript6_javascriptスキルのSet/WeakSetの詳細説明

WBOY
リリース: 2016-05-16 15:55:28
オリジナル
1192 人が閲覧しました

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 ノードを保存するために使用され、これらのノードがドキュメントから削除されてもメモリ リークは発生しません。

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!