按存储为数组的位置设置哈希对象值

时间:2017-11-02 20:41:14

标签: javascript json node.js

我不确定如何在可变高度访问原始json。

    var json = {
                 "parent": {
                             "child": "foo"
                           }
                };


    function set_json_value(loc,value){
      var curr_json_item = json;
      for(var i = 0; i < loc.length - 1;i++){
        curr_json_item = curr_json_item[loc[i]];
      }
      curr_json_item = value;
      console.log(json);
     }

    set_json_value(["parent","child"],"bar");

parent-&gt; child的值仍为&#34; foo&#34;和json没有变化。

1 个答案:

答案 0 :(得分:0)

您只需更改变量的值,但不要通过修改属性来更新对象本身。我想你想要这样的东西:

function set_json_value(loc,value){
   // todo: make sure loc is not empty here

   var curr_json_item = json;
   for(var i = 0; i < loc.length - 1;i++){
     curr_json_item = curr_json_item[loc[i]];
   }
   curr_json_item[loc[loc.length-1]] = value;
   console.log(json);
}

另外,你不传递“json”作为参数,但是使用全局变量本身,我也会改变它。