我想通过深度层在json对象上分配变量。 例如:
veryDeepTree[branch][branch][branch][branch] = value
将通过执行函数来实现:
assignByDepth(4, value, branch)
答案 0 :(得分:0)
您可以通过使用递归函数来实现此目的。其中函数的每次迭代都深入1级,直到达到设置值的所需级别。这是一个基本版本,假设在调用函数之前对象存在正确的深度。就像现在一样,如果使用不当可能会有多个错误,应该修改以添加更多的错误检查。
var veryDeepTree = {
branch : {
branch : {
branch : {
}
}
}
};
function assignByDepth(subTree, currentTreeDepth, objProperty, value){
if(currentTreeDepth == 1){
subTree[objProperty] = value;
}else{
assignByDepth(subTree[objProperty], --currentTreeDepth, objProperty, value);
}
}
assignByDepth(veryDeepTree, 3, "branch", {branch:10});
console.log(veryDeepTree);
assignByDepth(veryDeepTree, 4, "branch", 5555);
console.log(veryDeepTree);