动态Javascript层次循环

动态Javascript层次循环,javascript,loops,dynamic-data,javascript-objects,Javascript,Loops,Dynamic Data,Javascript Objects,以下代码构建了具有3个固定级别(3个节点)的节点层次结构: 如何更改此代码,以便在层次结构中创建的级别数不固定。如何使节点的创建成为动态的,因为节点的数量未知,并且会根据传递的某些数据而有所不同。如何实现,以便可以动态构建和定义层次结构大小。可以在上述代码中应用循环来实现这一点吗 /** * Just parses a string in a specific format * @return object * { * name, // Name of the node *

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

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

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

我希望它能帮助您。

好的,但我需要生成的层次结构及其所有数据以var treeData表示。如何做到这一点?是的:)var treeData=createNode(“(node1,[(node2,[(n3),(n4)])”;好的,我想这意味着用var treeData替换var节点(最后一行)?另外,我很难理解该做什么:函数parseNodeStr(str){/@to-do}很抱歉,我对这一级别的代码非常陌生。对于这个函数,我只说,它应该做什么,实现应该做什么(to-do)
/**
 * 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)])])");