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 ein Set und gibt ein neues Set zurück, das Elemente enthält, die in diesem Set, aber nicht im angegebenen Set enthalten sind.

Syntax

js
difference(other)

Parameter

other

Ein Set Objekt oder ein set-artiges Objekt.

Rückgabewert

Ein neues Set Objekt, das Elemente enthält, die in diesem Set, aber nicht im other Set enthalten sind.

Beschreibung

In der mathematischen Notation ist Differenz definiert als:

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

Und unter Verwendung eines Venn-Diagramms:

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

difference() akzeptiert set-artige Objekte als other Parameter. Es erfordert, dass this eine tatsächliche Set Instanz ist, da es direkt die zugrunde liegenden Daten in this abruft, ohne benutzergenerierten Code auszuführen. Dann hängt sein Verhalten von der Größe von this und other ab:

  • Wenn es mehr Elemente in this gibt als other.size, iteriert es über other, indem es dessen keys() Methode aufruft, und erstellt ein neues Set mit allen Elementen in this, die nicht in other vorkommen.
  • Andernfalls iteriert es über die Elemente in this und erstellt ein neues Set mit allen Elementen e in this, die other.has(e) einen falsy Wert zurückgeben lassen.

Die Reihenfolge der Elemente im zurückgegebenen Set 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

Siehe auch