我有一个输入数组,路径像
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");
这是一个工作场所
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句