Konvertieren Sie einen JavaScript-String in Punktnotation in eine Objektreferenz
In JavaScript ist das Navigieren in Objekteigenschaften mithilfe der Punktnotation eine gängige und praktische Vorgehensweise . Es kann jedoch Situationen geben, in denen Sie über eine Zeichenfolge verfügen, die eine durch Punkte getrennte Hierarchie darstellt, und diese für einen einfachen Zugriff in eine Objektreferenz konvertieren müssen.
Problemstellung:
Wie können Sie bei einem gegebenen Objekt und einer Zeichenfolge in Punktnotation die Zeichenfolge in eine Objektreferenz umwandeln, um auf das entsprechende Objekt zuzugreifen? Eigenschaft?
Beispiel:
Betrachten Sie das folgende Objekt:
var obj = { a: { b: '1', c: '2' } }
Und eine Zeichenfolge:
"a.b"
Wie Können Sie „a.b“ konvertieren, um den zugehörigen Wert abzurufen? obj.a.b?
Lösung:
Es gibt mehrere Methoden, um dies zu erreichen:
1. Verwendung der Funktion eval() (NICHT EMPFOHLEN):
eval("var val = obj." + string);
Diese Lösung wertet die Zeichenfolge direkt als Code aus und weist das Ergebnis val zu. Aus Sicherheitsgründen wird jedoch generell von der Verwendung von eval() abgeraten.
2. Verwendung des []-Operators (indirekte Methode):
var val = obj[string];
Diese Methode verwendet die Syntax der eckigen Klammern, um indirekt auf die Eigenschaft zuzugreifen. Es funktioniert, wenn die Zeichenfolge ein gültiger JavaScript-Bezeichner ist (z. B. keine Leerzeichen oder Sonderzeichen).
3. Verwendung der Methode „red()“:
var val = string.split('.').reduce(function(obj, i) { return obj[i]; }, obj);
Diese Lösung teilt die Zeichenfolge durch den Punkt (.) auf und verwendet die Methode „red()“, um die Objekthierarchie ausgehend vom Stammobjekt zu durchlaufen.
4. Verwendung der multiIndex()-Funktion:
var val = multiIndex(obj, string.split('.')); function multiIndex(obj, is) { return is.length ? multiIndex(obj[is[0]],is.slice(1)) : obj }
Diese Lösung durchläuft rekursiv die Objekthierarchie, bis die gewünschte Eigenschaft gefunden wird. Es verarbeitet sowohl mehrstufige Punktnotation als auch Arrays (falls erforderlich).
Verarbeitung von Arrays (optional):
Falls die Zeichenfolge Array-Indizes enthält, können Sie diese verwenden folgender Ansatz:
var val = string.match(/[^\]\[.]+/g).reduce(function(obj, i) { return obj[i]; }, obj);
Zusätzlich Hinweise:
Das obige ist der detaillierte Inhalt vonWie kann ich einen JavaScript-String in Punktnotation in eine Objektreferenz umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!