Ist es möglich, die Eigenschaften in einem JavaScript-Objekt zu durchlaufen? Zum Beispiel habe ich ein JavaScript-Objekt wie folgt definiert:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
Eigenschaften werden diesem Objekt dynamisch hinzugefügt. Gibt es eine Möglichkeit für mich, einfach eine Schleife zu durchlaufen und zu überprüfen, ob eine Eigenschaft vorhanden ist? Wenn das so ist, wie?
javascript
lodash
user3111277
quelle
quelle
lodash
und nicht dies ist nur dadurch gerechtfertigt, dass der nervigehasOwnProperty
Scheck nicht benötigt wirdVerwenden Sie
_.forOwn()
.https://lodash.com/docs#forOwn
Beachten Sie, dass
forOwn
Überprüfungen durchgeführt werdenhasOwnProperty
, wie dies normalerweise beim Durchlaufen der Eigenschaften eines Objekts erforderlich ist.forIn
führt diese Prüfung nicht durch.quelle
key
der zweite Parameter ist, aber es macht SinnFür Ihren erklärten Wunsch, "zu überprüfen, ob eine Eigenschaft vorhanden ist", können Sie Lo-Dash's direkt verwenden
has
.quelle
Sie können dies definitiv mit Vanilla JS tun, wie stecb gezeigt hat, aber ich denke, es
each
ist die beste Antwort auf die Kernfrage, wie man es mit lodash macht.Wie JohnnyHK erwähnt hat, gibt es auch die
has
Methode, die für den Anwendungsfall hilfreich wäre, aber von dem, was ursprünglich angegeben wurde,set
kann es nützlicher sein. Angenommen, Sie wollten diesem Objekt dynamisch etwas hinzufügen, wie Sie bereits erwähnt haben:So würde ich es machen, basierend auf der ursprünglichen Beschreibung.
quelle
Nehmen wir als Beispiel das folgende Objekt
Holen Sie zuerst alle Schlüssel im Objekt
und dann durchlaufen
einfach alles zusammenfügen
quelle
In ES6 ist es auch möglich, die Werte eines Objekts mithilfe der
for..of
Schleife zu durchlaufen . Dies funktioniert jedoch nicht sofort für JavaScript-Objekte, da Sie eine @@ Iterator-Eigenschaft für das Objekt definieren müssen. Dies funktioniert wie folgt:for..of
Schleife fordert das "zu iterierende Objekt" auf (nennen wir es obj1 für ein Iteratorobjekt. Die Schleife iteriert über obj1, indem sie nacheinander die next () -Methode für das bereitgestellte Iteratorobjekt aufruft und den zurückgegebenen Wert als Wert für jede Iteration verwendet der Schleife.Hier ist ein Beispiel:
Jetzt können wir die
for..of
Schleife verwenden:quelle
Es wäre hilfreich zu verstehen, warum Sie dies mit lodash tun müssen. Wenn Sie nur überprüfen möchten, ob ein Schlüssel in einem Objekt vorhanden ist, benötigen Sie kein lodash.
Wenn Sie nach einem Wert suchen, können Sie diesen verwenden
_.invert
quelle