Heim >Web-Frontend >js-Tutorial >Wie weist man tief verschachtelten JavaScript-Objekten mithilfe von String-Eigenschaftsnamen Werte zu?

Wie weist man tief verschachtelten JavaScript-Objekten mithilfe von String-Eigenschaftsnamen Werte zu?

DDD
DDDOriginal
2024-12-15 20:04:17855Durchsuche

How to Assign Values to Deeply Nested JavaScript Objects Using String Property Names?

Dynamische Eigenschaftszuweisung in JavaScript mithilfe von Zeichenfolgennamen

In JavaScript treten Szenarien auf, in denen Sie möglicherweise eine tief verschachtelte Eigenschaft eines Objekts festlegen müssen, indem Sie nur seine Zeichenfolgendarstellung verwenden. Zum Beispiel:

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

Um die Eigenschaft obj.foo.bar.foobar auf „hello world“ zu setzen, können Sie die folgende Funktion verwenden:

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

Diese Funktion iteriert durch die verschachtelte Eigenschaftsstruktur und erstellt dabei alle fehlenden Objekte. Am Ende weist es der gewünschten Eigenschaft den endgültigen Wert zu.

Verwendung:

assign(obj, propName, "hello world");

Nach Ausführung dieser Zuweisung wird obj.foo.bar.foobar auf „hello world“ gesetzt. .

Das obige ist der detaillierte Inhalt vonWie weist man tief verschachtelten JavaScript-Objekten mithilfe von String-Eigenschaftsnamen Werte 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