有很多解决方案来检查/访问一个对象文字,给出一串点符号,但我需要做的是根据点符号字符串设置一个对象文字.这是非常技术性的,为什么我需要这样做,如果不可行,我会提出一个不同的解决方案.
这是我想做的事情:
var obj = {
'a': 1,
'b': 2,
'c': {
'nest': true
}
};
Run Code Online (Sandbox Code Playgroud)
我想要一个可以像这样工作的函数:
setDepth(obj, 'c.nest', false);
Run Code Online (Sandbox Code Playgroud)
这会改变对象:
var obj = {
'a': 1,
'b': 2,
'c': {
'nest': false
}
};
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一个小时,但还没有找到一个好的解决方案.另一个帮助将非常感谢!
我的版本:
function setDepth(obj, path, value) {
var tags = path.split("."), len = tags.length - 1;
for (var i = 0; i < len; i++) {
obj = obj[tags[i]];
}
obj[tags[len]] = value;
}
Run Code Online (Sandbox Code Playgroud)
工作演示:http://jsfiddle.net/jfriend00/Sxz2z/