我已经在stackoverflow上阅读了this现有问题。
我的目标是在"嵌套属性上设置属性并设置一个新值(不带eval!):
我所拥有的是动态字符串,例如:“A.B.C
”
和JSON对象:
var obj ={
A: {
B: {
C: 23
C1: {}
}
}
}
现在我想访问此属性并进行设置:
如果字符串具有固定数量的属性,我可以写:
obj[prop1][prop2][prop3] = 42
什么方法可以使这种动态,所以当传递“A.B”时,B处的对象被替换?
答案 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;