Set.prototype.isDisjointFrom()

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.

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

構文

js
isDisjointFrom(other)

引数

other

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

返値

この Set に other の集合と共通する要素がない場合は true、そうでなければ false です。

解説

共通する要素を持たない 2 つの集合は、互いに素です。数学的な表記では、次のようになります。

A is disjoint from BAB=A\text{ is disjoint from }B \Leftrightarrow A\cap B = \empty

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

2 つの円からなるベン図。A と B は重複する領域を持たないため、互いに素です。

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

  • this の中の要素が other.size よりも多かった場合、otherkeys() メソッドを呼び出すことで走査し、other の中のある要素が this の中にあれば false を返し(そして return() メソッドを呼び出すことで keys() イテレーターを閉じる)、そうでなければ true を返します。
  • そうでなければ、this の要素を走査し、this の要素 e のうち、other.has(e)真値であれば false を返します。そうでなければ true を返します。

この実装により、isDisjointFrom() の実行効率は、thisother のうち小さい方のセットのサイズにほぼ依存します(Set が指数時間でアクセスできると仮定した場合)。

isDisjointFrom() の使用

完全平方の集合(20 未満)は素数の集合(20 未満)と一致しません。なぜなら、完全平方は定義上、2 つの整数の積に分解できるのに対し、1 は素数とはみなされないからです。

js
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const squares = new Set([1, 4, 9, 16]);
console.log(primes.isDisjointFrom(squares)); // true

完全平方の集合(20 未満)は合成数の集合(20 未満)と互いに素集合ではありません。なぜなら、1以外の完全平方はすべて定義上合成数だからです。

js
const composites = new Set([4, 6, 8, 9, 10, 12, 14, 15, 16, 18]);
const squares = new Set([1, 4, 9, 16]);
console.log(composites.isDisjointFrom(squares)); // false

仕様書

Specification
Set methods
# sec-set.prototype.isdisjointfrom

ブラウザーの互換性

BCD tables only load in the browser

関連情報