Heim > Web-Frontend > js-Tutorial > Wie kann ich einen JavaScript-String in Punktnotation in eine Objektreferenz umwandeln?

Wie kann ich einen JavaScript-String in Punktnotation in eine Objektreferenz umwandeln?

Linda Hamilton
Freigeben: 2024-12-19 18:19:09
Original
754 Leute haben es durchsucht

How can I convert a JavaScript string in dot notation into an object reference?

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' } }
Nach dem Login kopieren

Und eine Zeichenfolge:

"a.b"
Nach dem Login kopieren

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);
Nach dem Login kopieren

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];
Nach dem Login kopieren

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);
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

Zusätzlich Hinweise:

  • Berücksichtigen Sie Auswirkungen auf die Leistung, wenn Sie Rekursion oder Reduce() verwenden, insbesondere bei großen oder komplexen Objekthierarchien.
  • Stellen Sie sicher, dass die Eingabezeichenfolgen bereinigt sind, um bösartigen Code zu verhindern Ausführung.
  • Eigenschaftsschlüssel in JavaScript sind immer Zeichenfolgen, daher sind Objektreferenzen in Punktnotation von Natur aus vorhanden stringbasiert.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage