0

以下代码构建具有 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);

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

4

1 回答 1

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)])])");

我希望它对你有帮助。

于 2012-09-20T19:07:04.663 回答