0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JavaScript】Setオブジェクトとは

Posted at

Setオブジェクトとは

セットオブジェクトには以下の特徴があります。

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

値が一意であることが保証されている

以下のコードは、Setオブジェクトを使用して一意な値のコレクションを作成し、その動作を示しています。

// Setオブジェクトの作成
const mySet = new Set();

// 値の追加
mySet.add(1);
mySet.add(2);
mySet.add(3);
mySet.add(1); // 既に1が含まれているため、無視される

// サイズの確認
console.log("セットのサイズ:", mySet.size); // 出力: セットのサイズ: 3

// 値の重複が無視されることを確認
console.log("セット内の値:", mySet); // 出力: セット内の値: Set(3) { 1, 2, 3 }

// 値の比較は厳密な等価性で行われることを確認
console.log("1がセットに含まれているか:", mySet.has(1)); // 出力: 1がセットに含まれているか: true
console.log("文字列の'1'がセットに含まれているか:", mySet.has("1")); // 出力: 文字列の'1'がセットに含まれているか: false

このコードでは、最初に空のSetオブジェクトを作成し、それにいくつかの値を追加しています。その際、同じ値が複数回追加されている場合でも、重複する値は無視されます。また、値の比較には厳密な等価性が使用されるため、異なるデータ型や厳密に等しいでない値はセット内で一意なものとして扱われます。

順序を持たず、インデックスでアクセスできない

Setオブジェクトは、要素の順序を保持しないデータ構造です。つまり、要素が追加された順序で格納されるわけではなく、Set内の要素は自動的にソートされることもありません。そのため、Setオブジェクトではインデックスを使用して要素にアクセスすることはできません。

例えば、次のようにSetオブジェクトを使用していくつかの要素を追加した場合を考えてみましょう。

const mySet = new Set();

mySet.add("apple");
mySet.add("banana");
mySet.add("orange");

このとき、mySet内の要素の順序は["apple", "banana", "orange"]という順序である保証はありません。要素が追加された順序を保持することはありません。そのため、インデックスを使用してmySet内の要素にアクセスすることはできません。

代わりに、Setオブジェクトのメソッド(例: has, add, deleteなど)を使用して要素を操作します。また、Set内の要素を反復処理するためには、forEachfor...ofなどの反復処理構文を使用することが一般的です。

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?