In Javascript, wie kann ich dynamisch eine verschachtelte Eigenschaft eines Objekts erhalten
var arr = { foo : 1, bar: { baz : 2 }, bee : 3 }
function getter(variable) {
return arr[variable];
}
Wenn ich will, 'foo' vs 'Biene' kann ich nur tun arr[variable]
- das ist einfach, und die Funktion tut.
Aber was ist, wenn ich will arr.bar.baz
AKA arr[bar][baz]
?
Was kann ich übergebe die get-Funktion, die mich das tun lassen, (und natürlich auch lassen Sie mich nicht verschachtelte Eigenschaften, die über die gleiche Funktion).
Versuchte ich getter('bar.baz')
und getter('[bar][baz]')
aber diese hat nicht funktioniert.
Ich glaube, ich kann analysieren, um Punkte oder Klammern (wie hier: Im javascript-test für die Eigenschaft tief verschachtelte Objekt-graph?). Gibt es eine bessere Möglichkeit? (Neben eval natürlich.)
Besonders, weil ich auf das tief richtig eingestellt, viele, viele Male in einer Schleife für eine ganze Reihe von array-Elementen.
InformationsquelleAutor der Frage Ariel | 2011-08-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa ändern Sie die getter-Funktion der Unterschrift als
getter('bar', 'baz')
stattps. nicht getestet, aber Sie erhalten die Idee 😉
InformationsquelleAutor der Antwort Aaron Qian
Können Sie einen deep-access-Funktion, basierend auf einem string für den Pfad. Beachten Sie, dass Sie nicht haben, können alle Perioden in den Namen der Eigenschaft.
Wenn der access-string leer ist, gibt das Objekt zurück. Ansonsten, immer weiter entlang der Zugriff auf Pfad bis zum vorletzten accessor. Wenn das ein ojbect, gibt den letzten
object[accessor]
Wert. Ansonsten, gibt Sie undefined zurück.InformationsquelleAutor der Antwort RobG
Verwendung von lodash Bibliothek Methoden wäre ein besserer Ansatz:-
https://lodash.com/docs#get
InformationsquelleAutor der Antwort Ninja
Können Sie den Zugriff auf die Funktionen, Argumente, wo Sie übergeben eine beliebige Anzahl von strings.
Ich empfehle auch die Verwendung der arr als parameter für eine bessere Kapselung:
InformationsquelleAutor der Antwort Daff
Gibt es eine Funktion definiert auf diesem blog sicher Lesen verschachtelten Eigenschaften von JS-Objekt
Ermöglicht es Ihnen, um mir ein Objekt für Eigenschaften... dh.
und wenn jeder Teil des Objekts Kette ist null oder undefiniert, es gibt eine leere Zeichenfolge zurück....
InformationsquelleAutor der Antwort Ben