动态地按深度分配JSON属性

时间:2017-05-12 22:07:50

标签: javascript arrays json object

我想通过深度层在json对象上分配变量。 例如:

veryDeepTree[branch][branch][branch][branch] = value

将通过执行函数来实现:

assignByDepth(4, value, branch)

1 个答案:

答案 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);