我正在研究一个小库,它可以让我使用对象进行一些基本的键值编码。说我有以下对象:Javascript对象键值编码。动态设置嵌套值
var data = { key1: "value1", key2: { nested1: 1, nested2: "wowza!" } };
而且我有以下的JavaScript函数:
var setData = function(path, value) {
eval("data." + path + "= value;");
};
而且在使用中:
setData("key1", "updated value1"); // data.key1 == "updated value1"
setData("key2.nested1", 99); // data.key2.nested1 == 99
这个工作,但是我想完成以上不使用eval
。这是可能的,还是eval
最好的办法?
编辑:
注意可以假设你设置的值存在,至少在路径深度 - 1,我更关心的是设置一个现有对象的值。
我希望我可以高举这100次 - 这正是我期待的!谢谢! – 2011-11-18 16:42:30
**非常感谢**!我无法开始告诉你这对我有多大帮助。 – 2014-08-19 19:50:25
这是一个很好的答案。我创建了一个没有'obj'参数的版本,并且使用ES6语法来实现易读性。 https://gist.github.com/sungwoncho/8caf7f3d9e56741c0631cda134e01832 – 2016-07-01 05:35:44