动态Javascript层次结构循环

时间:2012-09-20 18:43:46

标签: javascript loops dynamic-data javascript-objects

以下代码构建了具有3个固定级别(3个节点)的节点层次结构:

     function createNode(name) {
     return({name: name, children: []});
     }
     function addChild(node, child) {
     node.children.push(child);

      return node;
      }
      var tree = createNode("");
      var subChild = createNode("");
      addChild(subChild, createNode("A31"));

      addChild(tree, subChild);

如何更改此代码,以便不修复层次结构中创建的级别数。如何使节点的创建动态化,因为节点的数量是未知的,并且将根据传递的一些数据而变化。如何完成以便可以动态构建和定义层次结构大小。可以在上面的代码中应用循环来实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

/**
 * Just parses a string in a specific format
 * @return object
 * {
 *    name, // Name of the node
 *    childens // Array of child nodes IN STRING REPRESENTATION
 * }
 */
function parseNodeStr(str) {
  // @to-do
}

function createNode(defStr) {
  var node = false;,
      nodeParsed = parseNodeStr(defStr);

  if (nodeParsed) {
    node = {};
    node.name = nodeParsed.name;
    node.childrens = [];
    for (child in nodeParsed.childs) {
       addChild(node, createNode(child);
    }
  }

  return node;
}

function addChild(node, child) {
  if (child) {
    node.childrens.push(child);
  }

  return node;
}

var node = createNode("(node1,[(node2,[(n3),(n4)])])");

我希望它可以帮到你。