Heim  >  Artikel  >  Web-Frontend  >  Wie greife ich mithilfe einer Zeichenfolge auf verschachtelte JavaScript-Objekteigenschaften zu?

Wie greife ich mithilfe einer Zeichenfolge auf verschachtelte JavaScript-Objekteigenschaften zu?

DDD
DDDOriginal
2024-11-20 15:35:16587Durchsuche

How to Access Nested JavaScript Object Properties Using a String?

Zugriff auf untergeordnete Objekteigenschaften mit Punktnotationszeichenfolge

Der Zugriff auf untergeordnete Eigenschaften von JavaScript-Objekten mithilfe der verketteten Punktnotation ist eine häufige Programmieraufgabe. Bei der Verwendung dieses Ansatzes für den Zugriff auf dynamische Eigenschaften gibt es jedoch Einschränkungen.

Betrachten Sie das folgende Objekt:

var r = { a: 1, b: { b1: 11, b2: 99 } };

Um auf den Wert von b2 zuzugreifen, kann man die Standardpunktnotation verwenden:

r.b.b2

Wenn jedoch ein dynamischer Eigenschaftszugriff basierend auf einer Zeichenfolge erforderlich ist, z. B.:

var s = "b.b2";

Der direkte Versuche wie r.s oder r[s] würden fehlschlagen. Eine Lösung besteht darin, eine benutzerdefinierte Funktion zu verwenden, die die Zeichenfolgensegmente durchläuft, um die Eigenschaft abzurufen:

function getDescendantProp(obj, desc) {
  var arr = desc.split(".");
  while (arr.length && (obj = obj[arr.shift()]));
  return obj;
}

console.log(getDescendantProp(r, "b.b2")); // 99
````

This function effectively simulates the behavior of dot notation by breaking down the string and recursively accessing the corresponding properties. However, it is important to note that this method works best for simple object property scenarios. Arrays can also be accessed using this approach by treating elements as dotted properties:

getDescendantProp({ a: [ 1, 2, 3 ] }, 'a.2'); // 3

Das obige ist der detaillierte Inhalt vonWie greife ich mithilfe einer Zeichenfolge auf verschachtelte JavaScript-Objekteigenschaften zu?. 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