Die beste Art, eine Where-Klausel in Javascript auszuführen?

8

Ich versuche, ein JSON zu analysieren, das an mich gesendet wird und alles im Format

ist %Vor%

Was wäre der beste Weg, um den Wert von key2 zu erhalten? Gibt es eine Möglichkeit, dies ohne eine For-Schleife zu tun?

    
Earlz 05.08.2011, 16:28
quelle

9 Antworten

9

Sie können die Funktion Auswählen von Underscore.js Bibliothek.

    
Paul Phillips 05.08.2011, 16:38
quelle
5

Nicht wirklich, aber es wäre nicht schwer, eine Funktion dafür zu erstellen. Es würde jedoch tatsächlich eine for Schleife beinhalten.

Der Vollständigkeit halber wäre das die Funktion:

%Vor%

Verwendung:

%Vor%     
this.lau_ 05.08.2011 16:30
quelle
3

jQuery grep () ist ein gutes Analogon für eine Where-Klausel:

%Vor%

Ihr gefiltertes Array enthält dann zwei Elemente,

%Vor%     
DivineOps 09.02.2015 21:56
quelle
2

Sie können es nicht mit einem Array machen, aber Sie können damit ein assoziatives Array wie ein Objekt erstellen. Sobald Sie es gemacht haben, können Sie es wie Hash verwenden.

%Vor%     
Sanghyun Lee 05.08.2011 16:53
quelle
1

Regex - keine for-Schleife:

%Vor%     
Brian 05.08.2011 16:43
quelle
1

Hier ist ein Beispiel, dass der Prototyp das Array-Objekt ist. Hinweis: wird zum Beispiel angezeigt - find ist kein guter Name für diese Funktion, und dies wird wahrscheinlich nicht für alle Arrays benötigt

Betrachten Sie stattdessen nur die Funktionsdefinition und erstellen Sie eine Funktion wie getObjVal , die wie getObjVal(arr,'propName') aufruft, ähnlich der Antwort von LaurenT.

Gegeben

%Vor%

Definition

%Vor%

Verwendung

%Vor%     
vol7ron 05.08.2011 22:22
quelle
0

Top-Antwort macht den Job. Hier ist eine Ein-Liner-Version von ihm mit lodash (wie Unterstreich zum größten Teil):

%Vor%

In lodash ist select nur ein Alias ​​für den Filter. Ich gebe ihm das mit Objekten gefüllte Datenfeld. Ich benutze _.has als die Filterfunktion, da es genau das tut, was wir wollen: Überprüfen Sie, ob eine Eigenschaft existiert.

_.has erwartet zwei Argumente:

%Vor%

Seit _.has erwartet zwei Argumente, und ich weiß, dass einer von ihnen immer konstant ist (das Pfadargument). Ich verwende die Funktion _.partialRight , um die Konstante key2 anzuhängen. _.partialRight gibt eine neue Funktion zurück, die ein Argument erwartet: das zu inspizierende Objekt. Die neue Funktion prüft, ob obj.key2 existiert.

    
Quy 27.11.2015 23:34
quelle
0

Heyas. Sie können die Funktionen .reduce () oder .transform () der lodash-Bibliothek verwenden, um dies zu implementieren. Lodash ist modularer als Unterstreichung (Underscore um 5kb, Lodash um 17kb), ist aber generell leichter, da Sie nur die spezifischen Module enthalten, die Sie benötigen (Siehe: Ссылка zur Diskussion). Für diese Demonstration werde ich das gesamte Modul importieren (in der Regel kein Problem im Backend): Ich habe diese Schnipsel für jedes Szenario geschrieben, das sowohl numerische als auch nicht-numerische Argumente behandelt.

Ссылка

Ссылка

Ziehen Sie lodash:

%Vor%

_. reduce () zu where-Klausel:

%Vor%

_. transform () in where-Klausel:

%Vor%

Ich hoffe, das hilft.

    
Ryan Weiss 27.11.2015 21:28
quelle
-1

Versuchen Sie Folgendes:

%Vor%     
AdrianB 05.08.2011 16:40
quelle

Tags und Links