【发布时间】:2015-06-23 10:19:31
【问题描述】:
我在 JavaScript 中创建递归函数时遇到问题。 我有一个包含组的数组,其中每个组都有一个唯一的 ID、一个名称和一个“父级”(对组 ID 的引用)。
我的递归函数的重点是列出从一个点开始的所有子组。这就像一个组织结构图,您从顶部开始列出每个子组及其子组。
数组groups由以下数据组成:
var groups = [{ id: 1, naam: "Directie", parent: 1 },
{ id: 2, naam: "Marketing", parent: 1 },
{ id: 3, naam: "Human Resources", parent: 1 },
{ id: 4, naam: "Financieel", parent: 2 },
{ id: 5, naam: "Verkoop", parent: 3 }];
以下代码仅可用于查找直接子级,但不能更深入地搜索下一级。
var group = $("#groepen :selected").val();
var output = "";
var hasChildren = false;
var children = 0;
for(var i = 0; i < groups.length; i++)
{
if(groups[i].parent === parseInt(group))
{
children++;
output += "Group ID: " + groups[i].id + "\nGroup name: " + groups[i].naam +
"\nGroup parent: " + groups[i].parent +
"\n---------------------------------------------\n";
hasChildren = true;
}
}
output = "Children: " + children +
"\n---------------------------------------------\n" + output;
if(!hasChildren)
{
output = "No data found";
}
$("#groups").html(output);
因此,在变量 group 为“Directie”的以下情况下,我会得到以下结果: - Directie(根) - 营销 - 人力资源
但它并没有深入到下一个级别。 我想要的结果是这样的: - Directie(根) - 营销 - 金融 - 人力资源 - Verkoop
顺序本身并不重要,我只想列出所有属于“Directie”子组的组。
注意:我还用当前代码创建了fiddle。要对此进行测试,只需单击“搜索”按钮并从下拉列表中选择一个“根”组。
【问题讨论】:
-
“组”是指知道树根的节点和叶子列表?
标签: javascript recursion tree