【JavaScript】 Setについて
Setの作成
Setは、重複しない値のコレクションを格納するためのデータ構造です。Setは反復可能(iterable)であり、順序が保証されています。Setを作成するためには、以下のようにコンストラクタを使用します。
const set = new Set([1, 2, 3, 4, 5]);
上記のコードでは、セットに数値1から5までが格納されます。Setの中に同じ値を追加しても、重複は許されません。
addメソッド
addメソッドは、Setに値を追加するために使用します。値がすでにセットに存在する場合は、追加されません。
const set = new Set();
set.add(1);
set.add(2);
set.add(1); // 追加されません
console.log(set); // Set { 1, 2 }
上記の例では、1が2回追加されますが、Setにおいては重複は無視されるため、最終的にはセットには1と2の2つの値が格納されます。
sizeプロパティ
sizeプロパティは、Setに格納されている値の数を返します。重複した値がないため、セット内のユニークな要素の数が得られます。
const set = new Set([1, 2, 3, 4, 5]);
console.log(set.size); // 5
上記のコードでは、Setには5つの異なる値が格納されているため、sizeプロパティは5を返します。
hasメソッド
hasメソッドは、Set内に特定の値が存在するかをチェックします。値が存在すればtrue、存在しなければfalseを返します。
const set = new Set([1, 2, 3, 4, 5]);
console.log(set.has(3)); // true
console.log(set.has(6)); // false
上記のコードでは、3はセット内に存在するためtrueが返され、6は存在しないためfalseが返されます。
deleteメソッド
deleteメソッドは、Setから特定の値を削除します。削除に成功するとtrueを返し、削除する値が存在しない場合はfalseを返します。
const set = new Set([1, 2, 3, 4, 5]);
console.log(set.delete(3)); // true
console.log(set.delete(6)); // false
console.log(set); // Set { 1, 2, 4, 5 }
上記のコードでは、3が削除され、結果として残った値は1, 2, 4, 5です。6はセットに存在しないため削除されません。
clearメソッド
clearメソッドは、Set内のすべての値を削除します。このメソッドを呼び出すと、Setは空になります。
const set = new Set([1, 2, 3, 4, 5]);
set.clear();
console.log(set); // Set {} (空のSet)
上記のコードでは、clearメソッドを呼び出した後、Setが空になっていることが確認できます。
keysメソッド
keysメソッドは、Set内の全ての値を反復処理するために使える反復可能なオブジェクトを返します。Setでは、値自体がキーとして使われるため、keysメソッドは値のセットを返します。
const set = new Set([1, 2, 3, 4, 5]);
const iterator = set.keys();
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
上記のコードでは、keysメソッドで返されたイテレータを使って、セット内の値を順番に取得しています。
valuesメソッド
valuesメソッドは、keysメソッドと同じ動作をします。Setに格納されている値そのものを取得するために使用します。
const set = new Set([1, 2, 3, 4, 5]);
const iterator = set.values();
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
こちらもkeysメソッドと同じように動作し、セット内の値を順番に取得できます。
entriesメソッド
entriesメソッドは、Set内のすべての値をキーとバリューのペアとして返します。Setの場合、キーと値は同じものです。
const set = new Set([1, 2, 3, 4, 5]);
const iterator = set.entries();
console.log(iterator.next().value); // [1, 1]
console.log(iterator.next().value); // [2, 2]
entriesメソッドは、Set内のすべてのエントリーを反復するためのイテレータを返します。返される値は、[キー, 値]のペアです。
forEachメソッド
forEachメソッドは、Set内のすべての要素に対して関数を実行するために使用します。コールバック関数は、値、値の順番、セット自体を引数として受け取ります。
const set = new Set([1, 2, 3, 4, 5]);
set.forEach(function(value, index, set) {
console.log(value, index);
});
// 出力:
// 1 0
// 2 1
// 3 2
// 4 3
// 5 4
forEachメソッドを使用すると、セット内の各要素に対して順番に処理を実行できます。