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

View in English Always switch to English

Set.prototype.symmetricDifference()

Baseline 2024
最近利用可能

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

symmetricDifference()Set インスタンスのメソッドで、集合を受け取り、この Set と与えられた集合のどちらかにあるが、両方にはない要素の入った新しい Set を返します。

構文

js
symmetricDifference(other)

引数

other

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

返値

新しい Set オブジェクトで、この Set と other の集合のどちらかにあるものの、両方にはない要素が入ったものです。

解説

数学的な記法では、対称差分 (symmetric difference) は次のように定義されます。

AB=(AB)(BA)A\ominus B = (A\setminus B)\cup(B\setminus A)

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

2 つの円が重なっているベン図。A と B の対称差は、どちらかの円に含まれるが、両方の円に含まれない領域です。

symmetricDifference() は、Set 風オブジェクトを other 引数として受け入れます。this は、ユーザーコードを呼び出すことなく、this オブジェクトに格納されているデータに直接アクセスするため、実際の Set インスタンスであることが要求されます。次に、otherkeys() メソッドを呼び出して繰り返し処理を行い、this に存在し、other に存在しないすべての要素と、other に存在し、this に存在しないすべての要素をすべて含む新しい Set を構築します。

返される Set 内の要素の順序は、まず this の要素、次に other の要素となります。

symmetricDifference() の使用

次の例では、偶数(10 未満)と完全平方(10 未満)の集合の対称差分を計算します。結果は、完全平方または偶数のどちらかで、両方にはない数の集合となります。

js
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.symmetricDifference(squares)); // Set(5) { 2, 6, 8, 1, 9 }

仕様書

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

ブラウザーの互換性

関連情報