Set.prototype.isSupersetOf()

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.

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

構文

js
isSupersetOf(other)

引数

other

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

返値

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

解説

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

ABxB,xAA\supseteq B \Leftrightarrow \forall x\in B,\,x\in A

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

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

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

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

  • this の要素数が other.size より少ない場合は、直接 false を返します。
  • そうでなければ、otherkeys() メソッドを呼び出して走査し、other の要素が this に存在しない場合は false を返します(そして、return() メソッドを呼び出して keys() イテレータを終了します)。 そうでなければ、true を返します。

isSupersetOf() の使用

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

js
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
const fours = new Set([4, 8, 12, 16]);
console.log(evens.isSupersetOf(fours)); // 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(odds.isSupersetOf(primes)); // false

同値集合は互いに上位集合です。

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

仕様書

Specification
Set methods
# sec-set.prototype.issupersetof

ブラウザーの互換性

BCD tables only load in the browser

関連情報