我正在尝试制作一个“随机化”网络工具,该工具通过单击按钮时通过可能性树中的“路线”,根据各种信息数组生成随机结果。
如果我不能很好地解释自己,这是我要实现的目标的图形表示:
我知道我可以使用类似的方法从数组中选择随机项目:
var myArray = [
"Apples",
"Bananas",
"Pears"
];
var randomItem = myArray[Math.floor(Math.random()*myArray.length)];
但是我不知道如何组织数组并创建规则,以使结果遵循上面图形中显示的路线。
我想结果A会像这样:
在jQuery中这可能吗?有人可以帮助我实现这一目标吗?
答案 0 :(得分:1)
您的问题似乎是如何创建JavaScript树结构。这是该结构在实际中的外观。例如,根节点可能包含一个名称和一个子列表:
{
"name": "Go!",
"children": [...]
}
每个孩子本身就是一个节点:
{
"name": "Go!",
"children": [
{"name": "Alliance", "children": [...]},
{"name": "Horde", "children": [...]}
]
}
最终到达一个没有子节点(叶子):
{"name": "Survival", "children": []}
要随机遍历此树,请从根开始并选择一个随机子代,然后选择该子代的一个随机子代,依此类推,直到到达叶节点为止。 (以这种方式生成的随机数构成了您可能要保存的路径。)但是,这种随机遍历不一定会以相等的概率选择每个叶子。为此,请创建到每个叶节点的路径数组(例如,示例中的路径是Alliance→Paladin→Human→Protection的[0, 1, 0, 1]
),选择一条随机路径,然后根据那条路。
此答案未详细说明如何将这棵树排列成可视图形,这可以通过多种方式完成。