我正在研究一個小庫,它可以讓我使用對象進行一些基本的鍵值編碼。說我有以下對象: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