sosukesuzuki.dev

March, 26 2024

ECMAScript の Set Methods プロポーザル

ECMAScript の Set にいくつかのメソッドを追加する Set Methods プロポーザルについて解説する。

免責事項

筆者は集合の用語に慣れているわけではないので、もし用語の使い方が不適切である場合は Twitter 等で連絡をいただきたい。

また、Set Methods は本記事執筆時点で Stage 3 である。

追加されるメソッド

Set.prorotype.intersection(other)

thisother の共通部分となる新しい Set を返す。

const foo = new Set([1, 2, 3]);
const bar = new Set([3, 4, 5]);

console.log(foo.intersection(bar));
// Set(1) {3}

Set.prototype.union(other)

thisother の和となる新しい Set を返す。

const foo = new Set([1, 2, 3]);
const bar = new Set([3, 4, 5]);

console.log(foo.union(bar));
// Set(5) {1, 2, 3, 4, 5}

Set.prototype.difference(other)

thisother の差となる新しい Set を返す。対称でないことに注意。

const foo = new Set([1, 2, 3]);
const bar = new Set([3, 4, 5]);

console.log(foo.difference(bar));
// Set(2) {1, 2}

console.log(bar.difference(foo));
// Set(2) {4, 5}

Set.prototype.symmetricDifference(other)

thisother対称差となる新しい Set を返す。

const foo = new Set([1, 2, 3]);
const bar = new Set([3, 4, 5]);

console.log(foo.symmetricDifference(bar));
// Set(4) {1, 2, 4, 5}

Set.prototype.isSubsetOf(other)

thisother の部分集合であるかどうかを真偽値で返す。

const foo = new Set([1, 2, 3]);
const bar = new Set([1, 2]);
const baz = new Set([4, 5]);

console.log(bar.isSubsetOf(foo));
// true
console.log(baz.isSubsetOf(foo));
// false

Set.prototype.isSupersetOf(other)

thisother の上位集合(superset)であるかどうかを真偽値で返す。

const foo = new Set([1, 2, 3]);
const bar = new Set([1, 2]);
const baz = new Set([4, 5]);

console.log(foo.isSupersetOf(bar));
// true
console.log(foo.isSupersetOf(baz));
// false

Set.prototype.isDisjointFrom(other)

thisother互いに素であるかどうかを真偽値で返す。

const foo = new Set([1, 2, 3]);
const bar = new Set([3, 4]);
const baz = new Set([4, 5]);

console.log(foo.isDisjointFrom(bar));
// false
console.log(foo.isDisjointFrom(baz));
// true

参考