Har*_*San 9 javascript recursion tree-nodes nodes data-structures
我正在处理一个非常复杂的工作流程,我希望将其表示为JavaScript数据结构.流程本质上是一组问题和答案,其中一个问题的答案影响下一个问题.以下是流程可能如下所示的基本示例:

我不确定如何将此流转换为易于使用的JavaScript对象.理想情况下,我希望有一个易于循环/递归的结构,并且可以轻松修改,因此如果有人想在以后更改流程,他们可以这样做,而无需进行太多更改.
我觉得这是一种奇怪的树结构,其中节点可以有多个父节点.(我不确定这样的数据结构是什么.)
无论如何,我唯一的想法是为每个节点分配一个ID,然后创建一个节点对象数组,如下所示:
{
id: 5,
parents: [2, 3],
children: [6, 7, 8]
}
Run Code Online (Sandbox Code Playgroud)
但是,当涉及到循环遍历节点对象时,这似乎是非常不灵活的(尽管我可能是错的).
如果有人可以提供一些关于我应该研究什么样的数据结构以及可能如何在JavaScript中实现它们的指导/指导,我将非常感激.
非常感谢你提前.
您最初的想法将适合您的方案.此外,您已经回答了有关数据结构的问题:JSON.我会坚持下去.
我唯一会改变的是:除非你不得不回答问题,否则我认为你不需要拯救父母.
如果是这种情况,你有一个有向无环图,这是我能想到的唯一结构.
有一些框架负责在JS中实现和可视化这些图形,请参考这个问题.
如果您要自己实现这个结构,这里有一些(非常基本的)代码可以帮助您入门:
var graph = graph || {};
graph.nodes = [
{id:1, children:[2,3]},
{id:2, children:[]},
{id:3, children:[4]},
{id:4, children:[]}
];
//Returns the next question-id for an answer-id
//or -1 if this was the last answer
graph.nextQForA = function(aId) {
for(var i = 0; i < graph.nodes.length; i++)
{
if(graph.nodes[i].id === aId && graph.nodes[i].children.length > 0 )
return graph.nodes[i].children[0];
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
此处显示的用法(Chrome控制台):

遍历也可以递归地而不是迭代地完成.
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |