2011-06-06 69 views
2

我需要从Javascript中的树元素创建一个数组,并作为新手我不知道如何实现这一点。用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 
+1

你的'for'循环缺少一个关闭'}'。 – 2011-06-06 13:25:34

+0

@Mike Samuel在SO的错字,谢谢你注意到它:-) – Bruno 2011-06-06 14:03:29

+0

@Pointy谢谢你的回答! – Bruno 2011-06-06 14:03:56

回答

2

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

nodes.push(something); 

,增加了:

var nodes = []; 

然后你就可以用的东西给它添加数组的末尾;在这个意义上,它就像一个列表。您可以通过数字索引访问元素,从零开始。阵列的长度保持为你:

var len = nodes.length; 

你可能想要做的是使数组的另一个参数的函数。

编辑 —为了说明的模式,如果你已经有了一个递归函数:

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

然后你可以使用一个功能是其他代码将使用真正的API:

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

在JavaScript中,而且,它常用来放置“递归”功能“实际”福它使递归部分保持私密并保持全局名称空间更清洁。

+0

你也可以在JS中用'nodes [nodes.length] = theItem'在数组中添加一些东西。 – 2011-06-06 13:26:11

+0

@ josh.trow是的。 – Pointy 2011-06-06 13:29:22

+0

但是在函数中声明数组会消除前一个,不是吗? – Bruno 2011-06-06 13:31:27

相关问题