javascript对象中的动态设置值(json)

时间:2014-11-21 14:29:13

标签: javascript json

我已经在stackoverflow上阅读了this现有问题。

我的目标是在"嵌套属性上设置属性并设置一个新值(不带eval!):

我所拥有的是动态字符串,例如:“A.B.C

和JSON对象:

var obj ={
    A: {
        B: {
            C: 23
            C1: {}
            }   
    }
}

现在我想访问此属性并进行设置:

如果字符串具有固定数量的属性,我可以写:

obj[prop1][prop2][prop3] = 42

什么方法可以使这种动态,所以当传递“A.B”时,B处的对象被替换?

1 个答案:

答案 0 :(得分:0)

这样的东西会起作用..



var str = "A.B.C";
var obj ={
  A: {
    B: {
      C: 23,
      C1: {}
    }   
  }
};
updateObj(obj,str,10);

function updateObj(obj,str,val){
  var tok = str.split(".");
  var update = function(obj, index){
    if (index < tok.length){
      if ( !obj.hasOwnProperty(tok[index])){  
        obj[tok[index]] = {};  
      } 
      if (index == tok.length-1){
        obj[tok[index]] = val;
      }
      update(obj[tok[index]],++index);
    }

  }
  update(obj,0);
}

console.log(obj);
&#13;
&#13;
&#13;