通过点符号字符串在对象文字中设置深度?

mat*_*lar 3 javascript

有很多解决方案来检查/访问一个对象文字,给出一串点符号,但我需要做的是根据点符号字符串设置一个对象文字.这是非常技术性的,为什么我需要这样做,如果不可行,我会提出一个不同的解决方案.

这是我想做的事情:

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)

我已经尝试了一个小时,但还没有找到一个好的解决方案.另一个帮助将非常感谢!

jfr*_*d00 6

我的版本:

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/