参见英文答案 >
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