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
Linda HamiltonOriginal
2024-12-19 18:19:09730Durchsuche

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' } }

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:

  • 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!

Stellungnahme:
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