LoginSignup
81
59

More than 5 years have passed since last update.

JavaScript Setオブジェクト

Posted at

Setオブジェクトとは

ES2015(ES6)から導入された、重複した値がないことを保証したコレクション。
以下のような特徴があります。

  • 値が一意であることが保証されている
  • 順序を持たず、インデックスでアクセスできない

Setの使い方

動作確認環境

  • Windows8.1
  • Node.js v10.14.1

Setの作成

var set = new Set();

これで作成することができます。
中身が空のSetオブジェクトが作成されます。

コンストラクタに初期値を渡すこともできます。
初期値として渡すことができるのは、Iteratorオブジェクトです。
Iteratorについてこちらの記事がとても分かりやすかったため、リンクさせていただきます。
JavaScript の イテレータ を極める!

以下の例では、Iteratorオブジェクトである配列を初期値として渡します。

var set = new Set(["value1", "value2", "value3"]);
console.log(set.size);
// 3

サイズの取得

sizeプロパティを参照することで、Setオブジェクトに含まれる値の数を取得します。

var set = new Set(["value1", "value2", "value3"]);
console.log(set.size);    // 3

値の追加 add

add(value)で、値を追加することができます。
すでに同じ値がSetオブジェクト内にある場合は無視されます。
(エラーにはなりません。)

var set = new Set();

set.add("apple");
set.add("banana");

console.log(set.size); // 2

// すでに存在する値を追加
set.add("banana");
console.log(set.size); // 2

値の削除

delete(value)で、その値をSetオブジェクトから削除します。

var set = new Set(["value1", "value2", "value3"]);
console.log(set.size);    // 3

set.delete("value2");
console.log(set.size);    // 2

全ての値を削除

clear()で、Setオブジェクトのすべての値を削除します。

var set = new Set(["value1", "value2", "value3"]);
console.log(set.size);    // 3

set.clear();
console.log(set.size);   // 0

値が存在するかどうかの確認

has(value)で、その値がSetオブジェクトに存在するかどうかを確認できます。

var set = new Set(["value1", "value2", "value3"]);
console.log(set.has("value1"));   // true
console.log(set.has("value5"));   // false

反復処理

for...of

Setへの追加順に要素を取り出せます。

var set = new Set();

set.add("apple");
set.add("banana");
set.add("melon");

for (var value of set) {
  console.log(value);
}

// apple
// banana
// melon
81
59
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
81
59