ホームページ  >  記事  >  ウェブフロントエンド  >  es6セットの用途は何ですか?

es6セットの用途は何ですか?

青灯夜游
青灯夜游オリジナル
2022-10-24 17:55:551894ブラウズ

Set は、順序付けされたデータを格納するために使用されるデータ構造です。Set の要素は一意であり、同じ要素を格納することはできません。Set() は反復可能なオブジェクトをパラメータとして受け入れることができますが、同一のコンテンツは格納されます。この反復可能なオブジェクトは削除されるため、重複要素を削除し、「Array.from(new Set(arr))」または「[...new Set(arr)]」を防ぐために使用できます。

es6セットの用途は何ですか?

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

1. 基本的な使用法

SetES6 によって提供される新しいデータ構造であり、配列 順序付けされたデータを格納するために使用されますが、ランダム アクセス機能はなく、配列のようにインデックス付けによって特定の要素を取得することはできません。 さらに、最も重要なことは、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 は要素が一意であるかどうかを内部的にどのように判断するのでしょうか?これは内部的にアルゴリズム 同じ値ゼロの等価 を使用します。これは等価演算子とほぼ同じです。違いは、このアルゴリズムでは NaNNaN## と等しいとみなされることです。 #。

2. インスタンスのプロパティとメソッド

インスタンス プロパティ

Set.prototype では、属性 size は要素の数を表すために定義されます。

let set = new Set([1,2,2,1,4,3,5])
console.log(set.size)//5

インスタンス メソッド

#Set インスタンス メソッドは、操作メソッドとトラバーサル メソッドの 2 つのカテゴリに分類できます。

1. 操作方法

  • Set.prototype.add(value) —— Set At に値を追加します。 の終わりは、Set 自体を返します。
  • Set.prototype.delete(value) —— 特定の値を削除し、削除が成功したかどうかを示すブール値を返します。
  • Set.prototype.has(value) - 値が Set の要素であるかどうかを示すブール値を返します。
  • Set.prototype.clear() —— すべてのメンバーをクリアします。戻り値はありません。

add() メソッドの戻り値は Set 自体であるため、チェーン呼び出しについて考えることができるはずです。

let set = new Set()
set.add(1).add(2).add(3)

2. トラバーサル メソッド

    ##Set.prototype.keys()
  • —— キー名のトラバーサーを返します
  • Set.prototype.values()
  • —— キーと値のペアのトラバーサーを返します。
  • Set.prototype.entries()
  • —— キーのトラバーサーを返します。 -値ペア
  • Set.prototype.forEach()
  • —— コールバック関数を使用して要素を走査します。構造体にはキー名がなく、キー値のみが含まれます (つまり、キー名とキー値は同じ値です)。そのため、keys メソッドは
  • values## とまったく同じように動作します。 # 方法。

3. WeakSet##WeakSet

Set のアップグレード バージョンであり、主に 2 つあります。違い:

WeakSet

は参照型のみを保存でき、基本型データは保存できません。 WeakSet の参照型はすべて弱参照です。

  • まず、最初の点は理解しやすいです。つまり、基本的な種類のデータは保存できません。<pre class="brush:js;toolbar:false;">const ws = new WeakSet() ws.add(1)//报错,Invalid value used in weak set</pre>次に 2 点目、
  • 内のオブジェクトWeakSet
  • は弱い参照です。これは、ガベージ コレクション メカニズムが WeakSet のオブジェクトへの参照を考慮しないことを意味します。外部参照カウントが 0 に達すると、ガベージ コレクション メカニズムによる処理を待機します。したがって、
  • WeakSet
はオブジェクトのグループを一時的に保存するのに適しています。

この機能により、

WeakSet のメンバーは、いつでもクリーンアップされる可能性があるため、参照には適していません。横断可能ではありません。 WeakSet のメソッドは基本的に上記の Set

と同じですが、

size 属性とトラバーサー メソッドがありません。 。 【関連する推奨事項: JavaScript ビデオ チュートリアル

プログラミング ビデオ ]

以上がes6セットの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。