Set 一意のコレクション
Setは一意の重複しない要素を管理するコレクションの型です。
基本的な使い方
宣言の方法
const set = new Set([1, 2, 'a']);
console.log(set); // Set [ 1, 2, 'a' ]
/*
const set = new Set();
set.add(1);
set.add(2);
set.add('a');
console.log(set); // Set [ 1, 2, 'a' ]
*/
コレクションのサイズ
const set = new Set([1, 2, 'a']);
console.log(set.size); // 3
要素の操作
要素の追加・削除・クリア・存在チェック
const set = new Set();
// 要素の追加
set.add(1); // Set [1]
set.add(2); // Set [1, 2]
set.add('a'); // Set [1, 2, 'a']
set.add('a'); // Set [1, 2, 'a'] 同じ値をaddしても要素は増えない
// 要素の存在チェックと削除
console.log(set.has(2)); //true
set.delete(2);
console.log(set.has(2)); //false
console.log(set); // Set [1, 'a']
// 要素のクリア
set.clear();
console.log(set); // Set []
要素の列挙・繰り返し
Setの繰り返し
const set = new Set([1, 2, 'a']);
set.forEach((k, v, s) =>{
console.log(`set[${k}] = ${v} , ${s}`);
// "set[1] = 1 , [object Set]"
// "set[2] = 2 , [object Set]"
// "set[a] = a , [object Set]"
});
for (let v of [...set]) {
console.log(v); // 1, 2, 'a'
}
for (let [k, v] of set.entries()) {
console.log(`set[${k}] = ${v}`);
// "set[1] = 1"
// "set[2] = 2"
// "set[a] = a"
}
for (let k of set.keys()) {
console.log(k); // 1, 2, 'a'
}
for (let v of set.values()) {
console.log(v); // 1, 2, 'a'
}
配列とSetの変換
const array = [1, 2, 'a'];
const set = new Set(array);
// setから配列
let array2 = Array.from(set);
console.log(array2); // [1, 2, "a"]
// スプレッド構文
let array3 = [...set];
console.log(array3); // [1, 2, "a"]