【问题标题】:Create an array with tree elements in Javascript在 Javascript 中创建一个包含树元素的数组
【发布时间】:2011-06-06 13:22:20
【问题描述】:

我需要从 Javascript 中的树元素创建一个数组,作为一个新手,我不知道如何实现这一点。

伪代码:

function make_array_of_tree_node(tree_node)
{
   for (var i = 0; i < tree_node.childCount; i ++) {
      var node = tree_node_node.getChild(i);
      if (node.type ==0) {
         // Here I'd like to put a link (node.title) in an array as an element
      } else if (node.type ==6) {
         // Here the element is a folder so a I need to browse it
         make_array_of_tree_node(node)
      }
   }
}

// Some code
make_array_of_tree_node(rootNode);
// Here I'd like to have access to the array containing all the elements node.title

【问题讨论】:

  • 您的for 循环缺少一个关闭的}。
  • @Mike Samuel SO 中的一个错字,感谢您注意 :-)
  • @Pointy 谢谢你的回答!
  • 不客气。祝你好运!

标签: javascript arrays function tree


【解决方案1】:

你可以这样声明一个数组:

var nodes = [];

然后你可以添加东西到它:

nodes.push(something);

添加到数组的末尾;从这个意义上说,它有点像一个列表。您可以通过数字索引访问元素,从零开始。为您维护数组的长度:

var len = nodes.length;

您可能想要做的是将数组作为函数的另一个参数。

edit——为了说明这个模式,如果你有一个递归函数:

function recursive(data, array) {
  if ( timeToStop ) {
    array.push( data.whatever );
  }
  else {
    recursive(data.subData, array);
  }
}

然后您可以使用 second 函数作为其他代码将使用的真正 API:

function actual(data) {
  var array = [];
  recursive(data, array); // fills up the array
  return array;
}

此外,在 JavaScript 中,通常将“递归”函数置于“实际”函数中,这使得递归部分私有化并保持全局命名空间更干净。

【讨论】:

  • 你也可以用nodes[nodes.length] = theItem在JS中的数组中添加一些东西
  • 但是在函数中声明数组会抹去前一个,不是吗?
  • 是的——这就是为什么我说你应该让数组成为函数的参数。调用函数时,传入数组。一种常见的模式是将您的函数包装在“外部”函数中。我会更新我的答案...
猜你喜欢
  • 2021-03-05
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 2014-05-02
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多