Set.prototype.intersection()
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.
intersection()
は Set
インスタンスのメソッドで、集合を受け取り、この Set と指定された集合の両方にある要素の入った新しい Set を返します。
構文
intersection(other)
引数
返値
新しい Set
オブジェクトで、この Set と other
の集合の両方にある要素が入ったものです。
解説
数学的な記法では、交差 (intersection) は次のように定義されます。
ベン図を使うとこうなります。
intersection()
は、Set 風オブジェクトを other
引数として受け入れます。this
は、ユーザーコードを呼び出すことなく、this
オブジェクトに格納されているデータに直接アクセスするため、実際の Set
インスタンスであることが要求されます。その後、その動作は this
と other
のサイズに依存します。
this
の中の要素がother.size
よりも多かった場合、other
をkeys()
メソッドを呼び出すことで走査し、そこから生成されたすべての要素のうちthis
にも存在する要素で新しい Set を構築します。- そうでなければ、
this
の要素を走査し、this
の要素e
のうち、other.has(e)
が真値を返すすべてを含む新しい Set を構築します。
この実装により、intersection()
の実行効率は、this
と other
のうち小さい方のセットのサイズにほぼ依存します(Set が指数時間でアクセスできると仮定した場合)。返される Set の要素の順序は、this
と other
のうち小さい方のセットの順序と同じです。
例
intersection() の使用
次の例では、奇数(10 未満)と完全平方(10 未満)の集合の共通部分を計算します。結果は、完全平方である奇数の集合となります。
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.intersection(squares)); // Set(2) { 1, 9 }
仕様書
Specification |
---|
Set methods # sec-set.prototype.intersection |
ブラウザーの互換性
BCD tables only load in the browser