Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Observable: Methode filter()

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die Methode filter() der Schnittstelle Observable gibt ein neues Observable zurück, das nur die Werte des Quell-Observables ausgibt, für die die bereitgestellte Callback-Funktion einen Truthy-Wert zurückgibt.

Syntax

js
filter(predicate)

Parameter

predicate

Eine Funktion, die für jeden vom Quell-Observable ausgegebenen Wert ausgeführt wird. Sie sollte einen Truthy-Wert zurückgeben, damit das zurückgegebene Observable den Wert ausgibt, andernfalls einen Falsy-Wert. Die Funktion wird mit den folgenden Argumenten aufgerufen:

value

Der aktuell verarbeitete Wert.

index

Der Index des aktuell verarbeiteten Werts, beginnend bei 0.

Rückgabewert

Ein neues Observable. Wenn es abonniert wird, ruft es predicate für jeden vom Quell-Observable ausgegebenen Wert auf und gibt den Wert nur dann aus, wenn predicate einen Truthy-Wert zurückgibt. Wenn das Quell-Observable abgeschlossen ist, wird auch das zurückgegebene Observable abgeschlossen.

Beschreibung

Wie andere Operatoren, die ein Observable zurückgeben, arbeitet diese Methode verzögert: Beim Aufruf wird ein neues Observable erstellt, ohne das Quell-Observable zu abonnieren. Die Verarbeitung beginnt, wenn das zurückgegebene Observable abonniert wird.

Wenn predicate eine Ausnahme auslöst, meldet das zurückgegebene Observable einen Fehler und beendet das Abonnement des Quell-Observables. Fehler des Quell-Observables werden ebenfalls weitergeleitet.

Der index zählt alle Werte des Quell-Observables, auch diejenigen, die herausgefiltert werden. Der Rückgabewert von predicate wird in einen booleschen Wert umgewandelt, ohne auf ihn zu warten. Eine asynchrone Funktion gibt daher unabhängig von ihrem späteren Ergebnis ein Truthy-Promise-Objekt zurück.

Beispiele

filter() verwenden

Dieses Beispiel zeigt die Mauskoordinaten nur dann an, wenn sich der Mauszeiger über einem von zwei <div>-Elementen bewegt. Der Filter schließt Ereignisse aus, deren Ziel ein anderes Element ist.

js
const outputElem = document.querySelector("p");

document.body
  .when("mousemove")
  .filter((e) => e.target.matches("div"))
  .map((e) => ({ x: e.clientX, y: e.clientY }))
  .subscribe({ next: reportCoords });

function reportCoords(e) {
  outputElem.textContent = `${e.x},${e.y}`;
}

Spezifikationen

Spezifikation
Observable
# dom-observable-filter

Browser-Kompatibilität

Siehe auch