JavaScript での Set の使用

ES6 より前は、主に配列とオブジェクトを使用してデータを格納していました。

ES6 には他に 2 つのデータ構造が追加されました: Set、 Map とWeakSet、 WeakMap です。

目次

1. セットデータの特徴

2.セットの作成と要素の追加

3. Set の共通機能に対する配列の重複排除

3.1. 通常のアレイ重複排除

3.2. Set メソッド配列の重複排除 

4. Set の共通メソッド

5.WeakSetの使用


1. セットデータの特徴

SetはArray array と多少似ていますが、Array との違いは、Set の要素を繰り返すことができないことです。

Set の作成方法に関係なく、Set と Array の違いをケースを通して示します。

Set と array にそれぞれ 4 つの要素を追加し、そのうち 10 要素を繰り返します

const set = new Set([10, 10, 12, 14])
console.log(set)

const array = [10, 10, 12, 14]
console.log(array)

Set には異なる値を持つ要素が 3 つしかないのに対し、Array 配列には 4 つの要素があることがわかります。 

2.セットの作成と要素の追加

Setコンストラクターを使用して Set を作成する必要があります(文字通り作成する方法はありません)。

  • 最初に空の Set オブジェクトを作成してから、add メソッドを使用して要素を追加できます。
  • 要素を直接追加することもできます
// 方式一:创建Set对象,使用add方法添加元素

const obj = {name: "aaa"}
const set1 = new Set()
set1.add(10)
set1.add(10)
set1.add(12)
set1.add(14)
set1.add(obj)
console.log(set1)

// 方式二: 直接添加元素

const set2 = new Set([10, 10, 12, 14, {name: "zzz"}])
console.log(set2)

どちらのメソッドも 4 つの要素のセットを作成し、オブジェクトも要素として使用できることがわかります

3. Set の共通機能に対する配列の重複排除

配列に重複する要素がある場合、 Set を使用すると、重複する要素をすばやく削除できます。もちろん、前述の方法を使用して重複排除することも可能です.最初に重複排除を実現する方法を見てから、Setを使用して重複排除する方法を学びましょう.

3.1. 通常のアレイ重複排除

通常のメソッドを使用して配列内の重複要素を削除する場合、多くのコードは必要ありませんが、少し面倒です。

const array = [10, 10, 12, 12, 12, 15, 17] //有几个重复的元素
const ordinaryArray = []
for(let item of array){
    if(!ordinaryArray.includes(item)){
        ordinaryArray.push(item)
    }
}

console.log(ordinaryArray)
  1. 要素を格納するための新しい配列 normalArray を作成します
  2. for...of を使用して配列をトラバースする
  3. 配列要素が通常の配列配列に含まれているかどうかを判断し、含まれていない場合は、配列要素を通常の配列配列に入れます

3.2. Set メソッド配列の重複排除 

一般的な方法は受け入れられるようで、それほど面倒ではありません。 Set を使用して重複を削除する方法を見てみましょう。

      const array = [10, 10, 12, 12, 12, 15, 17]
      const set = new Set(array)
      const newArray = Array.from(set)
      const newArray1 = [...set]
      console.log(set)
      console.log(newArray)
      console.log(newArray1)
  1. 配列をパラメータとして Set オブジェクトを作成する
  2. 作成した Set オブジェクトのインスタンスを配列に変換する

 Array.from()スプレッド演算子 (...) の両方でSet を配列に変換できます

4. Set の共通メソッド

セットの一般的なプロパティ:

size: Set 内の要素の数を返します。

一般的に使用されるメソッドを設定します。

add(value): 要素を追加し、Set オブジェクト自体を返します。

delete(value): この値に等しい要素をセットから削除し、ブール型を返します。

has(value): セットに要素があるかどうかを判断し、ブール型を返します。

clear(): セット内のすべての要素をクリアします。戻り値はありません。

forEach(callback, [, thisArg]): forEach を介してセットをトラバースします。

5.WeakSetの使用

セットに似た別のデータ構造は、WeakSet と呼ばれます。これも、内部要素を繰り返すことができないデータ構造です。

セットとの違い

  • 相違点 1: WeakSet に格納できるのはオブジェクト型のみで、基本的なデータ型は格納できません。
  • 違い 2: 要素への WeakSet参照は弱い参照です. オブジェクトへの他の参照がない場合、GC はオブジェクトをリサイクルできます

WeakSet の一般的なメソッド

  • add(value): 要素を追加し、WeakSet オブジェクト自体を返します。
  • delete(value): この値に等しい要素を WeakSet から削除し、ブール型を返します。
  • has(value): WeakSet に要素があるかどうかを判断し、ブール型を返します。 

おすすめ

転載: blog.csdn.net/m0_51636525/article/details/125236334