JavaScript 速習チュートリアル

JavaScript セットのメソッド

1. Set のメソッドとプロパティ

Set オブジェクトには、要素の操作や情報の取得のために以下のメソッドとプロパティが用意されています。

  • new Set()
  • add()
  • clear()
  • delete()
  • entries()
  • forEach()
  • has()
  • keys()
  • values()
  • size

2. new Set() メソッド

new Set() コンストラクタに配列(Array)を渡すことで、新しい Set を作成できます。

// 新しい Set を作成する
const letters = new Set(["a", "b", "c"]);

3. add() メソッド

add() メソッドを使用して Set に要素を追加します。

letters.add("d");
letters.add("e");

同一の要素を複数回追加しようとした場合、最初の値のみが保存されます。

letters.add("a");
letters.add("b");
letters.add("c");
letters.add("c");
letters.add("c");
letters.add("c");
letters.add("c");
letters.add("c");

Set オブジェクトの最大の特徴は、ユニークな(重複のない)値のみを格納する点にあります。既にセット内に存在する要素を追加しようとしても、add() メソッドは効果を持たず、セットの内容は変更されません。

4. size プロパティ

size プロパティは、セットに含まれる要素の数を返します。

// 新しい Set を作成する
const mySet = new Set(["a", "b", "c"]);

// 要素の数を取得する
mySet.size;

5. Set 要素の列挙

for..of ループを使用することで、Set 内のすべての要素(値)を反復処理(イテレーション)できます。

// Set を作成する
const letters = new Set(["a", "b", "c"]);

// すべての要素を列挙する
let text = "";
for (const x of letters) {
  text += x;
}

6. has() メソッド

has() メソッドは、指定された値がセット内に存在する場合に true を返します。

// Set を作成する
const letters = new Set(["a", "b", "c"]);

// Set に "d" が含まれているか確認する
answer = letters.has("d");

7. forEach() メソッド

forEach() メソッドは、セットの各要素に対して指定した関数(コールバック関数)を呼び出します。

// Set を作成する
const letters = new Set(["a", "b", "c"]);

// すべてのエントリを列挙する
let text = "";
letters.forEach(function(value) {
  text += value;
});

8. values() メソッド

values() メソッドは、Set 内のすべての値を含む Iterator(イテレータ) オブジェクトを返します。

// Set を作成する
const letters = new Set(["a", "b", "c"]);

// すべての値(Iterator)を取得する
const myIterator = letters.values();

// Iterator を使ってすべての値を列挙する
let text = "";
for (const entry of myIterator) {
  text += entry;
}
// Set を作成する
const letters = new Set(["a", "b", "c"]);

// すべての値を直接ループで列挙する
let text = "";
for (const entry of letters.values()) {
  text += entry;
}

9. keys() メソッド

keys() メソッドも values() と同様に、Set 内の値を含む Iterator オブジェクトを返します。

Set には本来「キー(Key)」が存在しませんが、keys()values() と同じ結果を返します。これは Map(マップ) オブジェクトとの互換性を保つための仕様です。

// Set を作成する
const letters = new Set(["a", "b", "c"]);

// Iterator を作成する
const myIterator = letters.keys();

// すべての要素を列挙する
let text = "";
for (const x of myIterator) {
  text += x;
}
// Set を作成する
const letters = new Set(["a", "b", "c"]);

// すべての要素を直接ループで列挙する
let text = "";
for (const x of letters.keys()) {
  text += x;
}

10. entries() メソッド

entries() メソッドは、Set から [value, value] ペアの Iterator を返します。

通常、entries() メソッドはオブジェクトから [key, value] のペアを返すものですが、Set にはキーがないため、便宜上 [値, 値] という形式で返されます。これも Map オブジェクトとの互換性を確保するための挙動です。

// Set を作成する
const letters = new Set(["a", "b", "c"]);

// すべてのエントリを取得する
const myIterator = letters.entries();

// すべてのエントリを列挙する
let text = "";
for (const entry of myIterator) {
  text += entry;
}
// Set を作成する
const letters = new Set(["a", "b", "c"]);

// すべてのエントリを直接ループで列挙する
let text = "";
for (const entry of letters.entries()) {
  text += entry;
}