2 Stimmen

Erweitern Sie ein JavaScript-Objekt, indem Sie einen String mit dem Pfad und einem Wert übergeben

Gibt es eine einfache Möglichkeit, ein JavaScript-Objekt zu erweitern, indem ein String und ein Wert übergeben werden?

Im Grunde brauche ich so etwas:

myObject = {}

var extendObj = function(obj, path, value){
}

var path = "a.b.c", value = "ciao";
extendObj(myObject, path, value);

console.log(myObject.a.b.c) // wird "ciao" ausgeben

3voto

Derek 朕會功夫 Punkte 88112
myObject = {};

var extendObj = function (obj, path, value) {
    var levels = path.split("."),
        i = 0;

    function createLevel(child) {
        var name = levels[i++];
        if(typeof child[name] !== "undefined" && child[name] !== null) {
            if(typeof child[name] !== "object" && typeof child[name] !== "function") {
                console.warn("Überschreibe " + name);
                child[name] = {};
            }
        } else {
            child[name] = {};
        }
        if(i == levels.length) {
            child[name] = value;
        } else {
            createLevel(child[name]);
        }
    }
    createLevel(obj);
    return obj;
}

var path = "a.b.c",
    value = "ciao";
extendObj(myObject, path, value);

console.log(myObject.a.b.c) //wird "ciao" ausgeben

http://jsfiddle.net/DerekL/AKB4Q/

Bildbeschreibung eingeben

Sie können in der Konsole sehen, dass es den Pfad gemäß dem von Ihnen eingegebenen path erstellt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X