2 Stimmen

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

Gibt es einen einfachen Weg, 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("Überschreiben von " + 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 hier eingeben

Sie können in der Konsole sehen, dass der Pfad gemäß path erstellt wird, den Sie eingegeben haben.

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