このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Set.prototype.isSubsetOf()

Baseline 2024
最近利用可能

June 2024以降、この機能は最新のバージョンの端末およびブラウザーで動作します。古い端末やブラウザーでは動作しないことがあります。

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

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-set.prototype.issubsetof

ブラウザーの互換性

関連情報