Wie kann ich nur Elemente eines Arrays behalten, die einer bestimmten Bedingung entsprechen?

7

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%     
Scimonster 25.11.2014, 16:34
quelle

3 Antworten

15

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:

%Vor%

Und zur Vollständigkeit ein Beispiel, das auch die Index- und Array-Parameter verwendet: Entfernen von Duplikaten aus dem Array:

%Vor%
    
Scimonster 25.11.2014, 16:34
quelle
5

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

verwenden %Vor%

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:

%Vor%

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%     
Madara Uchiha 25.11.2014 16:46
quelle
0

Eine präzisere Antwort, die der von @Scimonster folgt und die ES6-Syntax verwendet, wäre:

%Vor%
    
dinigo 06.10.2017 08:00
quelle

Tags und Links