javascript – 从包含键路径的字符串中获取json值

参见英文答案 >
How to set object property (of object property of..) given its string name in JavaScript?                                    12个

我有一个输入数组,路径就像

var path = [“foo”,“bar”,“baz”];

我有一个对象

var obj = {
    "foo": {
         "bar": {
              "baz": "cake"
         },
         "notbar": {
              "another": "value"
         }
    }
}

我想改变路径中的“baz”值.
我知道我可以使用

obj[path[0]][path[1]][path[2]] = "value";

但我不知道阵列会有多长. php和javascript anwsers都很感激!

最佳答案 这里是我不漂亮但工作的解决方案:

function setPropertyByPath(obj, path, value) {
    if(!path || path.length === 0) return;

    var property = path[0];
    for(var i = 1; i < path.length; i++) {
      property += "." + path[i];
    }
    property = "obj." + property + " = \"" + value + "\"";
    eval(property)
}

然后你打电话

setPropertyByPath(obj, path, "newValue");

这是一个工作FIDDLE

点赞