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 に答える