Set.prototype.symmetricDifference()

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.

Die symmetricDifference()-Methode von Set-Instanzen nimmt eine Menge und gibt eine neue Menge zurück, die Elemente enthält, die entweder in dieser Menge oder in der gegebenen Menge sind, aber nicht in beiden.

Syntax

js
symmetricDifference(other)

Parameter

other

Ein Set-Objekt oder ein set-ähnliches Objekt.

Rückgabewert

Ein neues Set-Objekt, das Elemente enthält, die entweder in dieser Menge oder in der other-Menge sind, aber nicht in beiden.

Beschreibung

In der mathematischen Notation ist die symmetrische Differenz definiert als:

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

Und mithilfe von Venn-Diagrammen:

Ein Venn-Diagramm, bei dem sich zwei Kreise überlappen. Die symmetrische Differenz von A und B ist der Bereich, der entweder von einem der beiden Kreise, aber nicht von beiden, eingenommen wird.

symmetricDifference() akzeptiert set-ähnliche Objekte als other-Parameter. Es erfordert, dass this eine tatsächliche Set-Instanz ist, da es die zugrunde liegenden Daten direkt aus this abruft, ohne benutzerdefinierten Code aufzurufen. Anschließend wird über other iteriert, indem die keys()-Methode aufgerufen wird, und es wird eine neue Menge mit allen Elementen in this erstellt, die in other nicht vorhanden sind, und allen Elementen in other, die in this nicht vorhanden sind.

Die Reihenfolge der Elemente in der zurückgegebenen Menge ist zuerst die in this, gefolgt von denen in other.

Beispiele

Verwendung von symmetricDifference()

Das folgende Beispiel berechnet die symmetrische Differenz zwischen der Menge der geraden Zahlen (<10) und der Menge der perfekten Quadrate (<10). Das Ergebnis ist die Menge der Zahlen, die entweder gerade oder ein perfektes Quadrat sind, aber nicht beides.

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 }

Spezifikationen

Specification
Set methods
# sec-set.prototype.symmetricdifference

Browser-Kompatibilität

Siehe auch