Set.prototype.difference()

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 difference()-Methode von Set-Instanzen nimmt eine Menge und gibt eine neue Menge zurück, die Elemente enthält, die in dieser Menge, aber nicht in der angegebenen Menge vorhanden sind.

Syntax

js
difference(other)

Parameter

other

Ein Set-Objekt oder ein mengenähnliches Objekt.

Rückgabewert

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

Beschreibung

In mathematischer Notation ist Differenz definiert als:

AB={xAxB}A\setminus B = \{x\in A\mid x\notin B\}

Und mit einem Venn-Diagramm dargestellt:

Ein Venn-Diagramm, bei dem sich zwei Kreise überschneiden. Die Differenz von A und B ist der Teil von A, der sich nicht mit B überschneidet.

difference() akzeptiert mengenähnliche Objekte als other-Parameter. Es erfordert, dass this eine tatsächliche Set-Instanz ist, da es direkt auf die zugrunde liegenden Daten von this zugreift, ohne benutzerdefinierten Code aufzurufen. Dann hängt sein Verhalten von den Größen von this und other ab:

  • Wenn this mehr Elemente als other.size hat, iteriert es über other, indem es dessen keys()-Methode aufruft, und erstellt eine neue Menge mit allen Elementen in this, die nicht in other vorhanden sind.
  • Andernfalls iteriert es über die Elemente in this und erstellt eine neue Menge mit allen Elementen e in this, für die other.has(e) einen falsy Wert zurückgibt.

Die Reihenfolge der Elemente in der zurückgegebenen Menge entspricht der in this.

Beispiele

Verwendung von difference()

Das folgende Beispiel berechnet die Differenz zwischen der Menge der ungeraden Zahlen (<10) und der Menge der perfekten Quadrate (<10). Das Ergebnis ist die Menge der ungeraden Zahlen, die keine perfekten Quadrate sind.

js
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.difference(squares)); // Set(3) { 3, 5, 7 }

Spezifikationen

Specification
Set methods
# sec-set.prototype.difference

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
difference

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Siehe auch