Ich habe ein Array und möchte es so filtern, dass es nur Elemente enthält, die einer bestimmten Bedingung entsprechen. Kann dies in JavaScript gemacht werden?
Einige Beispiele:
%Vor% Sie können dafür Array#filter()
Methode, eingeführt in ECMAScript5. Es wird in allen Browsern unterstützt, außer IE8 und älteren Versionen von Firefox. Wenn Sie diese Browser aus irgendeinem Grund unterstützen müssen, können Sie ein Polyfill für die Methode.
filter()
nimmt eine Funktion als erstes Argument an. Für jedes Element des Arrays wird Ihrer Funktion drei Argumente übergeben - der Wert des aktuellen Elements, sein Index im Array und das Array selbst. Wenn Ihre Funktion true
(oder einen truthigen Wert, z. B. 1
, "pizza"
oder 42
) zurückgibt, wird dieses Element im Ergebnis enthalten sein. Sonst wird es nicht. filter()
gibt ein neues Array zurück - das ursprüngliche Array bleibt unverändert. Das bedeutet, dass Sie den Wert irgendwo speichern müssen, sonst ist er verloren.
Nun, in den Beispielen von der Frage:
Und zur Vollständigkeit ein Beispiel, das auch die Index- und Array-Parameter verwendet: Entfernen von Duplikaten aus dem Array:
Um Einträge zu filtern, die keine streng array sind und daher nicht die Eigenschaft .filter
auf ihrem Prototyp haben, aber immer noch iterierbar sind (wie document.getElementsByTagName
), können Sie
Oder die Kurzschrift
%Vor% Wie bei Objekten, die nicht iterierbar sind, aber dennoch Eigenschaften filtern und ein Array von Schlüsseln erhalten möchten, die die Filterung passieren, können Sie mit Object.keys
wie folgt kombinieren:
Dann können Sie ein neues Objekt erstellen, das diese Eigenschaften enthält:
%Vor%Das Obige kann sogar zu einer Funktion kombiniert werden!
%Vor%Und verwende so:
%Vor%Tags und Links javascript arrays filter