ホームページ > 記事 > ウェブフロントエンド > es6セットの用途は何ですか?
Set は、順序付けされたデータを格納するために使用されるデータ構造です。Set の要素は一意であり、同じ要素を格納することはできません。Set() は反復可能なオブジェクトをパラメータとして受け入れることができますが、同一のコンテンツは格納されます。この反復可能なオブジェクトは削除されるため、重複要素を削除し、「Array.from(new Set(arr))」または「[...new Set(arr)]」を防ぐために使用できます。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
Set
は ES6
によって提供される新しいデータ構造であり、配列 順序付けされたデータを格納するために使用されますが、ランダム アクセス機能はなく、配列のようにインデックス付けによって特定の要素を取得することはできません。 さらに、最も重要なことは、Set
の要素は一意であり、同じ要素を格納することはできないということです。
Set
はインスタンスをインスタンス化するために使用されるコンストラクターです:
let set = new Set() set.add(1)//往set集合中添加元素1
さらに、Set()
は反復可能なオブジェクトを受け入れることができます。インスタンスの初期化データとしてパラメータとして使用されますが、反復可能オブジェクト内の同じ内容は削除されますが、これも配列の重複排除の手法です。
let set = new Set([1,2,2,1,4,3,5]) console.log(set)//Set(5) {1, 2, 4, 3, 5}
要素の一意性を利用して配列の重複を排除できます:
//方法一: Array.from(new Set(arr)) //arr是待去重的数组 //方法二: [...new Set(arr)]
なんと素晴らしいことでしょう。同様に、この機能は文字列内の同じ文字の重複を排除するためにも使用できます。
[...new Set(str)].join('')
ただし、上記はすべて Set
型要素の一意性によって実現されます。では、Set
は要素が一意であるかどうかを内部的にどのように判断するのでしょうか?これは内部的にアルゴリズム 同じ値ゼロの等価
を使用します。これは等価演算子とほぼ同じです。違いは、このアルゴリズムでは NaN
が NaN## と等しいとみなされることです。 #。
Set.prototype では、属性
size は要素の数を表すために定義されます。
let set = new Set([1,2,2,1,4,3,5]) console.log(set.size)//5
#Set インスタンス メソッドは、操作メソッドとトラバーサル メソッドの 2 つのカテゴリに分類できます。
——
Set At に値を追加します。 の終わりは、
Set 自体を返します。
—— 特定の値を削除し、削除が成功したかどうかを示すブール値を返します。
- 値が
Set の要素であるかどうかを示すブール値を返します。
—— すべてのメンバーをクリアします。戻り値はありません。
add() メソッドの戻り値は
Set 自体であるため、チェーン呼び出しについて考えることができるはずです。
let set = new Set() set.add(1).add(2).add(3)
keys
メソッドは 3.
WeakSet##WeakSet
は参照型のみを保存でき、基本型データは保存できません。 WeakSet
の参照型はすべて弱参照です。
<pre class="brush:js;toolbar:false;">const ws = new WeakSet()
ws.add(1)//报错,Invalid value used in weak set</pre>
次に 2 点目、WeakSet
のオブジェクトへの参照を考慮しないことを意味します。外部参照カウントが 0 に達すると、ガベージ コレクション メカニズムによる処理を待機します。したがって、WeakSet のメンバーは、いつでもクリーンアップされる可能性があるため、参照には適していません。横断可能ではありません。
WeakSet
のメソッドは基本的に上記の
Set
size 属性とトラバーサー メソッドがありません。 。
【関連する推奨事項:
JavaScript ビデオ チュートリアル
プログラミング ビデオ ]
以上がes6セットの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。