我试图找出如何创建一个泛型函数,该函数使用数组获取jsonObj的路径,然后更新数组中的最后一个键。
PS!这可能是我们错误的方法,所以请随意展示如何解决这个问题的其他例子。
最后应更新数据对象。
这是我到目前为止所提出的
data = {
'level1_1': {
'level2_1': {
'no1': 1,
'no2': 2
}
},
'level1_2': {
'level2_2': {
'no1': 10,
'no2': 20
}
}
}
var updateJson = function(path, value){
var a = data;
path.forEach(function(e){
a = a[e];
});
return a;
};
updateJson(['level1_2','level2_2','no2'], 100);
在这个例子中,我想更新值为100
的no2键答案 0 :(得分:0)
您可以使用递归执行此操作:
function updateJson(path,val,obj) {
if (!obj) obj = data;
if (path.length < 2) {
obj[path[0]] = val;
} else {
if (!obj[path[0]]) obj[path[0]] = {};
obj = obj[path.shift()];
updateJson(path,val,obj);
}
}
updateJson(['level1_2','level2_2','no2'], 100);
console.log(data.level1_2.level2_2.no2)//100