我有一个问答流程,如下所示:
基本思想是,根据为问题选择的答案,接下来会提出不同的问题。
我目前使用以下 JavaScript 对象表示此问答流程:
var QAndAObj = {
1: {
question: 'Question 1',
answers: [
{
answerText: 'Answer 1-1',
nextQuestion: 2
},
{
answerText: 'Answer 1-2',
nextQuestion: 3
}
]
},
2: {
question: 'Question 2',
answers: [
{
answerText: 'Answer 2-1',
nextQuestion: 3
},
{
answerText: 'Answer 2-2',
nextQuestion: null
}
]
},
3: {
question: 'Question 3',
answers: [
{
answerText: 'Answer 3-1',
nextQuestion: 4
},
{
answerText: 'Answer 3-2',
nextQuestion: null
},
{
answerText: 'Answer 3-3',
nextQuestion: null
}
]
},
4: {
question: 'Question 4',
answers: [
{
answerText: 'Answer 4-1',
nextQuestion: null
},
{
answerText: 'Answer 4-2',
nextQuestion: null
}
]
}
};
为了向用户显示进度条,我希望能够通过问题流计算最长和最短路径。
我最初的想法是编写一个如下所示的递归函数来遍历流程中的每条可能路径:
function recurse(node) {
for (var i = 0; i < node.answers.length; i++) {
if (node.answers[i].nextQuestion) {
recurse(QAndAObj[node.answers[i].nextQuestion]);
}
}
}
上面的函数确实允许我点击流中的每个节点,但我不确定如何计算流中的最长和最短路径。
任何帮助/建议/代码将不胜感激。
非常感谢。