セット(Set)
- セット
- set = new Set([iterable])
- set.add(value)
- set.size
- set.has(value)
- set.delete(value)
- set.clear()
- set.keys()
- set.values()
- set.entries()
- set.forEach(function[, this])
- set.intersection(set2)
- set.union(set2)
- set.difference(set2)
- set.symmetricDifference(set2)
- set.isSubsetOf(set2)
- set.isSupersetOf(set2)
- set.isDisjointFrom(set2)
- 弱参照セット(WeakSet)
セット
set = new Set([iterable])
set.add(value)
ES6(ES2015) でサポートされたオブジェクトで、値のリストを保持します。Chrome 38, Firefox 13, Internet Explorer 11, Opera 25, Safari 7.1 以降で使用できます。
var set = new Set();
set.add("Tanaka");
set.add("Suzuki");
console.log(set); // "Tanaka", "Suzuki"
同じ値を追加してもリストは増えません。
set.add("Tanaka");
set.add("Suzuki");
set.add("Suzuki");
console.log(set); // "Tanaka", "Suzuki"
コンストラクタには値の配列を指定できます。Internet Explorer と Safari ではサポートされていません。
var set = new Set(["Tanaka", "Suzuki"]);
set.size
リストの個数を返します。
var set = new Set();
set.add("Tanaka");
set.add("Suzuki");
set.size; // => 2
set.has(value)
has() を用いて、値が含まれているか確認することができます。
var set = new Set() set.add("Tanaka"); set.add("Suzuki"); if (set.has("Tanaka")) { console.log("Exist!"); }
set.delete(value)
set.clear()
delete() は指定した値を、clear() はすべての値をクリアします。
var set = new Set(); set.add("Tanaka"); set.add("Suzuki"); set.delete("Tanaka"); set.clear();
set.keys()
set.values()
set.entries()
for ... of 文でキー・バリューのリストを扱うことができます。Internet Explorer と Opera ではサポートされていません。
for (var value of set) { console.log(value); }
keys(), value(), entries() も使用できますが、key にも value にも同じ値が格納されます。
for (var key of set.keys()) { console.log(key); } for (var value of set.values()) { console.log(value); } for (var [key, value] of set.entries()) { console.log(key, "=", value); }
set.forEach(function[, this])
forEach 文でキー・バリューのリストを扱うことができます。こちらは、Internet Explorer でもサポートされていますが、Opera でサポートされていません。key も指定できますが、key と value に同じ値が格納されます。
set.forEach(function(value) {
console.log(value);
})
set.forEach(function(value, key) {
console.log(key, ":", value);
})
set.forEach(function(value, key, set) {
console.log(key, value, set);
});
set.forEach(function(value, key) {
console.log(key, value, this);
}, set); // setをthisとして引き渡す
set.intersection(set2)
ES2025 で追加されました。set と set2 の両方に含まれる要素のセットを返します。
const A = new Set([1, 2, 3, 4]);
const B = new Set([3, 4, 5, 6]);
console.log(A.intersection(B)); // => [3, 4]
set.union(set2)
ES2025 で追加されました。set または set2 どちらかに含まれる要素のセットを返します。
const A = new Set([1, 2, 3, 4]);
const B = new Set([3, 4, 5, 6]);
console.log(A.union(B)); // => [1, 2, 3, 4, 5, 6]
set.difference(set2)
ES2025 で追加されました。set の内、set2 に含まれない要素のセットを返します。
const A = new Set([1, 2, 3, 4]);
const B = new Set([3, 4, 5, 6]);
console.log(A.difference(B)); // => [1, 2]
set.symmetricDifference(set2)
ES2025 で追加されました。set または set2 どちらか一方のみに含まれる要素のセットを返します。
const A = new Set([1, 2, 3, 4]);
const B = new Set([3, 4, 5, 6]);
console.log(A.symmetricDifference(B)); // => [1, 2, 5, 6]
set.isSubsetOf(set2)
ES2025 で追加されました。set が set2 のサブセット(部分集合)であれば true、さもなくば false を返します。
const A = new Set([1, 2, 3]);
const B = new Set([0, 1, 2, 3, 4]);
console.log(A.isSubsetOf(B)); // => true
set.isSupersetOf(set2)
ES2025 で追加されました。set が set2 のスーパーセット(部分集合)であれば true、さもなくば false を返します。
const A = new Set([0, 1, 2, 3, 4]);
const B = new Set([1, 2, 3]);
console.log(A.isSupersetOf(B)); // => true
set.isDisjointFrom(set2)
ES2025 で追加されました。set と set2 に共通要素がひとつも無ければ true、さもなくば false を返します。
const A = new Set([1, 2, 3]);
const B = new Set([4, 5, 6]);
console.log(A.isDisjointFrom(B)); // => true
弱参照セット(WeakSet)
WeakSet は WeakMap のセット版です。詳細は WeakMap を参照してください。