Set.prototype.isSubsetOf()

Baseline 2024

Newly available

Since June 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

isSubsetOf()Set インスタンスのメソッドで、集合を取り、この Set のすべての要素が与えられた集合にあることを示す論理値を返します。

構文

js
isSubsetOf(other)

引数

other

Set オブジェクト、または Set 風オブジェクトです。

返値

この Set にあるすべての要素が other の集合にもあれば true、そうでなければ false です。

解説

数学的な記法では、部分集合は次のように定義されます。

ABxA,xBA\subseteq B \Leftrightarrow \forall x\in A,\,x\in B

ベン図を使うとこうなります。

2 つの円からなるベン図。A は B に完全に含まれるため、A は B の部分集合です。

メモ: 部分集合の関係は、真部分集合ではありません。つまり、thisother の中の要素が同じである場合、isSubsetOf()true を返します。

isSubsetOf() は、Set 風オブジェクトを other 引数として受け入れます。this は、ユーザーコードを呼び出すことなく、this オブジェクトに格納されているデータに直接アクセスするため、実際の Set インスタンスであることが要求されます。その後、その動作は thisother のサイズに依存します。

  • this の要素数が other.size より多い場合は、直接 false を返します。
  • そうでなければ、this の要素を走査し、this の要素 e のうち、other.has(e)偽値を返せば false を返し餡巣。それ以外の場合は、true を返します。

isSubsetOf() の使用

4 の倍数(20 未満)の集合は、偶数(20 未満)の集合の部分集合です。

js
const fours = new Set([4, 8, 12, 16]);
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
console.log(fours.isSubsetOf(evens)); // true

素数(20 未満)の集合は、すべての奇数(20 未満)の集合の部分集合ではありません。なぜなら、2 は素数ですが、奇数ではないからです。

js
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const odds = new Set([3, 5, 7, 9, 11, 13, 15, 17, 19]);
console.log(primes.isSubsetOf(odds)); // false

同値集合は互いに部分集合です。

js
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);
console.log(set1.isSubsetOf(set2)); // true
console.log(set2.isSubsetOf(set1)); // true

仕様書

Specification
Set methods
# sec-set.prototype.issubsetof

ブラウザーの互換性

BCD tables only load in the browser

関連情報