JavaScript の Set データ構造の詳細な説明

JavaScript の Set データ構造の詳細な説明

1. セットとは何か

セットは単純に数学的なセットとして考えることができます。

重複する値のない順序付けられていないデータのコレクションです。

2. セットコンストラクタ

Set コンストラクターのパラメーターには、次の形式を渡すことができます。

2.1) 配列

定数s = 新しいSet([1, 2, 1]);
console.log(s);

ここに画像の説明を挿入

ここでは、配列[1, 2, 1]がパラメータとして渡されます。Set は繰り返しのない値のコレクションなので、3 番目の 1 は自動的に削除されます。

2.2) 文字列

const s = new Set("Hello World!");
console.log(s);

ここに画像の説明を挿入

2.3) 議論

関数fun() {
    const s = new Set(引数);
    console.log(s);
}

楽しい(1, 2, 3);

ここに画像の説明を挿入

2.4) ノードリスト

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>設定</title>
</head>
<本文>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    
    <スクリプト>
        const s = new Set(document.querySelectorAll('p'));
        console.log(s);
    </スクリプト>
</本文>
</html>

ここに画像の説明を挿入

ここでは、3 つのpタグへの参照がSetに配置されています。

使用する必要がある場合は、このSetを走査し、それぞれpタグの参照を取り出して、 pタグを変更することができます。

2.5) 設定

s1 = 新しいSet([1, 2, 3]);
s2 を新しい Set(s1) に変換します。
コンソールログ(s2);

ここに画像の説明を挿入

これはs1をコピーしてs2に渡すことと同じですが、同じSetではありません。

コンソールログ(s1 === s2); 

ここに画像の説明を挿入

3. インスタンスのプロパティとメソッドを設定する

Set のプロパティには、メンバーの数を格納するために使用される属性sizeがあります。

定数s = 新しいSet([1, 2, 3]);
console.log(s.size);

ここに画像の説明を挿入

セットの方法

  • 追加

セットにメンバーを追加する

定数s = 新しいSet([1, 2, 3]);
// パラメータには 1 つだけ渡すことができます s.add(5);
console.log(s);
// add と連結できる
s.add(7).add(9);
console.log(s);

ここに画像の説明を挿入

  • 消去

セットからメンバーを削除するために使用します

定数s = 新しいSet([1, 2, 3]);
s.削除(2);
// 削除する項目がセット内に見つからない場合は何も起こらず、エラーも報告されません s.delete(5);
console.log(s);

ここに画像の説明を挿入

  • もっている

セットにメンバーが含まれているかどうかを判断するために使用されます

定数s = 新しいSet([1, 2, 3]);
コンソールログ(s.has(1));
コンソールログ(s.has(5));

ここに画像の説明を挿入

  • クリア

セットのすべてのメンバーを削除します

定数s = 新しいSet([1, 2, 3]);
s.クリア();
console.log(s);

ここに画像の説明を挿入

4. メンバーアクセスを設定する

メンバー アクセスはforEachメソッドを通じて実装され、メンバーが追加された順序で Set を走査します。

2つのパラメータがあり、最初のパラメータはコールバック関数で、2番目のパラメータはコールバック関数内のthisが指すものを設定します。

 s.forEach(コールバック関数、コールバック関数へのポインタ)

最初のパラメータを見てみましょう:

最初のパラメータ コールバック関数には、次の 3 つのパラメータがあります。

 s.forEach(関数(値、キー、セット){
	値はSetのメンバーです。Setでは、値とキーは等しくなります。Setは前のSet自体です。つまり、ここではset === sです。
});

例を通して理解してみましょう:

定数s = 新しいSet([1, 2, 3]);
s.forEach(関数(値、キー、セット) {
    console.log(値、キー、値 === キー);
    console.log(設定、設定 === s);
});

ここに画像の説明を挿入

2 番目のパラメータを見てみましょう。

定数s = 新しいSet([1, 2, 3]);
s.forEach(関数(値、キー、セット) {
    console.log(これを);
}、 書類);

ここに画像の説明を挿入

5. セットに関する注意事項

重複値に対するセットの判定は基本的に厳密な等式===判定に従う

しかし、 NaNの場合、SetではNaNNaNと等しい。

6. Setの使用例

アレイ重複排除

arr = [1, 2, 1]とします。
const s = new Set(arr);
arr = [...s];
// これらを 1 つの文に組み合わせることもできます // arr = [...new Set(arr)];
コンソールにログ出力します。

ここに画像の説明を挿入

文字列の重複排除

str = "11231131242"とします。
const s = new Set(str);
str = [...s].join("");
// 1 つの文として記述することもできます // str = [...new Set(str)].join("");
コンソールログ(str);

ここに画像の説明を挿入

DOM要素の保存

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>設定</title>
</head>
<本文>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    
    <スクリプト>
        const s = new Set(document.querySelectorAll('p'));
        s.forEach((要素) => {
            console.log(要素)
        });
    </スクリプト>
</本文>
</html>

ここに画像の説明を挿入

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • JS アルゴリズムとデータ構造における辞書の例の詳細な説明
  • JavaScript データ構造コレクションの作成 (2)
  • JavaScript データ構造コレクションの作成 (1)
  • JavaScript データ構造: ハッシュテーブルの作成 (1)
  • Go言語のデータ構造をJSONに変換する
  • JSはreduce()メソッドを使用してツリー構造データを処理します
  • Pythonで辞書をJSONファイルとして書き込む方法
  • 辞書の内容をJSONファイルに書き込むPythonサンプルコード
  • Python 辞書と json.dumps() で遭遇する落とし穴の分析
  • JavaScript データ構造辞書メソッド

<<:  CSS3 でテキストの点滅効果を実現する 3 つの方法 サンプルコード

>>:  適応分析と応答分析の違いを専門用語で詳しく説明

推薦する

WeChatアプレットがシンプルな計算機機能を実装

WeChatアプレット:シンプルな計算機、参考までに、具体的な内容は次のとおりです。ミニプログラムに...

Dockerコンテナを外部IPとポートにバインドする方法

Docker を使用すると、外部からコンテナにアクセスしたり、コンテナを相互接続したりすることで、ネ...

MySQL 構成 SSL マスタースレーブ レプリケーション

MySQL5.6 SSLファイルの作成方法公式ドキュメント: https://dev.mysql.c...

MySQL Limitクエリのパフォーマンスを向上させる方法

MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...

MySql 5.7.17 無料インストール構成チュートリアルの詳細な説明

1. mysql-5.7.17-winx64.zip インストール パッケージをダウンロードします ...

vue3 を使用してマテリアル ライブラリを構築する方法

目次なぜマテリアルライブラリが必要なのでしょうか?材質は何ですか?素材の種類fuep、vue3 ベー...

js 配列エントリ() 反復メソッドを取得する

目次1.entires() メソッドの詳細な構文2.entires() メソッドの一般的な使用法と注...

Linux で Squid プロキシ サーバーを構築するための完全な手順

序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...

MySQL 5.7 でパスワードを変更する簡単な方法

これは公式のスクリーンショットです。MySQL 5.7 をインストールすると、デフォルトのパスワード...

MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決

MySQLは独立した書き込み分離を設定します。コードに次のものを書くと問題が発生する可能性があります...

vue2.x の徹底研究 - h 関数の説明

目次解決、要約: vue プロジェクト。 .vue ファイルのテンプレート内に記述されたコードは、w...

vsCodeはワンクリックでvueテンプレートを生成します

1. ショートカットCtrl + Shift + Pを使用してコンソールを呼び出します 2、「スニペ...

ネイティブ Js で実装されたシンプルなシームレス スクロール カルーセルのサンプル コード

シンプルなシームレススクロールカルーセルには多くの抜け穴があり、後から画像を追加するのは非常に不便で...

js 学習ノート: class、super、extends キーワード

目次序文1. es6の前にオブジェクトを作成する2. es6 後のクラス宣言3. クラスの継承4. ...

MySQL外部キーの3つの関係例の詳細な説明

この記事では、例を使用して、MySQL 外部キーの 3 つの関係について説明します。ご参考までに、詳...