如何动态创建复杂/嵌套的js对象?

caf*_*991 1 javascript javascript-objects

我有以下数据.

var data ="abcd"; //只是一个例子,但可以更深入.

  1. 嵌套结构作为创建abcn的字符串

现在我想从这个数据创建一个js对象,就像这样..

{
  "a":{
     "b":{
        "c":{
            and so on till the given depth.  
          }
       }
  }

}
Run Code Online (Sandbox Code Playgroud)

我试过的

function createHierarchy( obj, group, i){

    if(i === group.length){
        return obj;
    }
    else{
        if(obj[group[i]] === undefined)
        {
            obj[group[i]] = new Object();

        }

        createHierarchy(obj[group[i]], group, ++i); 
    }
}
Run Code Online (Sandbox Code Playgroud)

问题

这个函数返回我未定义,因为我在每次递归调用中发送新创建的子对象,并且由于新创建的对象是{},因此最终结果是未定义的.

更新

我想只在它不存在的情况下创建对象.例如:如果已经存在,则插入一个值.生病了.

所以这就是我在@ Tholle的回答中添加的内容.

if(temp[array[i]] === undefined)
            temp = temp[array[i]] = {};
        else
            temp = temp[array[i]][name] = value;
Run Code Online (Sandbox Code Playgroud)

如此善意地建议出路.

Tho*_*lle 7

var data = "a.b.c.n";
var array = data.split(".");

var result = {};
var temp = result;
for(var i = 0; i < array.length; i++) {
    temp = temp[array[i]] = {};
}

console.log(result);
Run Code Online (Sandbox Code Playgroud)