Heim > Web-Frontend > js-Tutorial > Wie kann ich tief verschachtelten JavaScript-Objekten dynamisch Werte zuweisen, indem ich nur einen String-Eigenschaftsnamen verwende?

Wie kann ich tief verschachtelten JavaScript-Objekten dynamisch Werte zuweisen, indem ich nur einen String-Eigenschaftsnamen verwende?

Barbara Streisand
Freigeben: 2024-12-10 07:26:11
Original
413 Leute haben es durchsucht

How Can I Dynamically Assign Values to Deeply Nested JavaScript Objects Using Only a String Property Name?

Dynamische Eigenschaftszuweisung in JavaScript

In bestimmten Szenarien kann es erforderlich sein, einer Eigenschaft, die tief in einem Objekt verschachtelt ist, einen Wert zuzuweisen Struktur. Möglicherweise haben Sie den Eigenschaftsnamen jedoch nur als Zeichenfolge. Dies kann eine Herausforderung darstellen, da der direkte Zugriff auf die Eigenschaft das Durchlaufen der gesamten Objekthierarchie erfordern würde.

Lösung

Um dieses Problem zu beheben, können wir die Methode „assign()“ verwenden. Funktion:

function assign(obj, prop, value) {
    if (typeof prop === "string")
        prop = prop.split(".");

    if (prop.length > 1) {
        var e = prop.shift();
        assign(obj[e] =
                 Object.prototype.toString.call(obj[e]) === "[object Object]"
                 ? obj[e]
                 : {},
               prop,
               value);
    } else
        obj[prop[0]] = value;
}
Nach dem Login kopieren

Verwendung

Überlegen wir mal ein Beispiel:

var obj = {};
var propName = "foo.bar.foobar";

assign(obj, propName, "Value");
Nach dem Login kopieren

Erklärung

  1. Die Requisite wird zunächst mit der Methode split(".") in ein Array umgewandelt, was zu [" foo", "bar", "foobar"].
  2. Das erste Element des Arrays, foo, wird zugewiesen obj.
  3. Die Bedingung Object.prototype.toString.call(obj[e]) === „[object Object]“ prüft, ob obj.foo ein Objekt ist. Wenn dies zutrifft, weisen wir obj.foo obj[e] zu.
  4. Wenn obj.foo kein Objekt ist, erstellen wir ein neues Objekt und weisen es obj.foo zu.
  5. Wir wiederholen Der Prozess für bar und foobar, der letztendlich obj.foo.bar.foobar auf den Wert setzt, der an die Funktion „assign()“ übergeben wurde.

Durch die Verwendung von Mit der Funktion „assign()“ können Sie Eigenschaften auf jeder Tiefenebene dynamisch Werte zuweisen, auch wenn Sie nur den Eigenschaftsnamen als Zeichenfolge haben.

Das obige ist der detaillierte Inhalt vonWie kann ich tief verschachtelten JavaScript-Objekten dynamisch Werte zuweisen, indem ich nur einen String-Eigenschaftsnamen verwende?. 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