我有一个输入数组,路径如下
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 答案都值得赞赏!
尝试这个:
function getValueByPath(obj, path) {
var result = obj,
i;
for (i = 0; i < path.length; i++) {
try {
result = result[path[i]];
}
catch (e) {
return undefined;
}
}
return result
}
function setValueByPath(obj, path, value) {
var result = obj,
i;
for (i = 0; i < path.length - 1; i++) {
try {
result = result[path[i]];
}
catch (e) {
return;
}
}
if (typeof value == 'object') {
result[path[i]] = value;
}
}
鉴于您的变量初始化,getValueByPath(obj, path)
回报'cake'
,然后将其设置为setValueByPath(obj, path, 'value')
; now getValueByPath(obj, path)
回报'value'
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)