Javascript 问卷的正确数据结构是什么

Javascript 问卷的正确数据结构是什么,javascript,jquery,json,user-interface,data-structures,Javascript,Jquery,Json,User Interface,Data Structures,我正在尝试开发一份问卷,其中问题取决于答案,保存问题和问卷流的正确UI数据结构是什么 抱歉,如果不清楚,我想根据答案删除UI的某些部分,因此我需要Java脚本中的某种数据结构,以便我可以根据答案动态修改html,因此问题是如何将数据作为json带到页面,以及如何将其保存在JS中,并消除基于json和答案的UI的某些部分 1 What is your name?_______ 2 Did you ever code in java?___Y/N____ 3 <Question sh

我正在尝试开发一份问卷,其中问题取决于答案,
保存问题和问卷流的正确UI数据结构是什么

抱歉,如果不清楚,我想根据答案删除UI的某些部分,因此我需要Java脚本中的某种数据结构,以便我可以根据答案动态修改html,因此问题是如何将数据作为json带到页面,以及如何将其保存在JS中,并消除基于json和答案的UI的某些部分

1 What is your name?_______
2 Did you ever code in java?___Y/N____
     3 <Question should appear only if answer is yes> How many years? ____
     4 <Question should appear only if answer is no> Did you ever code using any programming language? ____
5 Select occupation 
        a Developer
        b Project manager
6 <Question should appear only if answer to 5 is b> years experience in project management ________
1你叫什么名字_______
2您曾经用java编写过代码吗?\是/否____
3多少年____
4.你曾经用任何编程语言编写过代码吗____
5.选择职业
开发者
b项目经理
6年项目管理经验________

假设我们只有以下限制:

  • 您希望每个问题只定义一次
  • 一个问题可以取决于之前提出的任何问题的任何答案
然后,我提出以下通用解决方案:

//根据前面的答案,每个问题都有一个id、一个文本和一个条件:
变量问题=[
{id:“姓名”,文本:“你叫什么名字?”},
{id:“编写java代码”,text:“您曾经用java编写过代码吗?”},
{id:“代码java年”,文本:“多少年?”,条件:answers=>answers[“代码java”]==“yes”},
{id:“编写其他代码”,text:“您是否使用过任何编程语言编写代码?”,条件:answers=>answers[“code java”]==“no”},
{id:“职业”,文本:“选择职业?”},
{id:“经验管理年数”,文本:“项目管理年数?”,条件:答案=>答案[“职业”]==“项目经理”}
]
//询问所有条件评估为真实的问题,并收集答案:
var answers={};
问题。forEach(问题=>{
如果(!question.condition | | question.condition(answers)){
答案[question.id]=提示(question.text);
}
});

控制台日志(应答)最明显的答案是每一个条件问题树都有一个BST。@保罗:那是一个二叉树,而不是一个二叉搜索树。@JimMischel sry把这两个问题搞混了。我的意思是,如果我们不想让同一个问题在图形中多次出现,那么使用一个图形结构(例如,一棵树)来捕获所有先决条件的二进制树可能不起作用。请不要再次更改问题的编程语言。因为如果你再换一次语言,我和我就白干了。我想这是一种不公平的获取声誉的方法。