从对象数组递归创建JSON树结构

时间:2012-12-30 03:59:00

标签: javascript arrays json object recursion

这是我的数据结构:

{ projects: [
      { revisions: [
            { files: [] },
        ],
      }
  ],
  user: {}
}

转到jsFiddle:http://jsfiddle.net/winduptoy/EXdDy/

我正在以递归方式创建对象父母及其id的JSON层次结构。检查你的控制台。正如预期的那样,查看projects[0].revisions[0]._idTree,其中包含projects._idrevisions作为projects 孩子 。现在查看projects[0].revisions[0].files[0]._idTree,其中包含projects.files作为projects.revisions 兄弟 ,当files应为< projects.revisions的强> 孩子 。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我认为这是你应该使用的:

http://www.jstree.com/

答案 1 :(得分:1)

请像这样重写recurseTree

function recurseTree(tree, newKey, newId) {
    if(angular.element.isEmptyObject(tree)) {
        tree[newKey] = {_id: newId};
        return;
    } 

    var child = null; // find current tree's child
    for(var key in tree) {
        if (key != '_id') {
            child = tree[key]; // found a child
            break;
        }
    }
    if (child) { // recursively process on child
        recurseTree(child, newKey, newId);
    } else { // no child, so just fill the tree
        tree[newKey] = {_id: newId};
    }
}