从多个数组中选择字符串,例如随机的“路线”

时间:2019-05-18 21:47:35

标签: javascript jquery random

我正在尝试制作一个“随机化”网络工具,该工具通过单击按钮时通过可能性树中的“路线”,根据各种信息数组生成随机结果。

如果我不能很好地解释自己,这是我要实现的目标的图形表示:

enter image description here

我知道我可以使用类似的方法从数组中选择随机项目:

var myArray = [
  "Apples",
  "Bananas",
  "Pears"
];

var randomItem = myArray[Math.floor(Math.random()*myArray.length)];

但是我不知道如何组织数组并创建规则,以使结果遵循上面图形中显示的路线。

我想结果A会像这样:

  • 用户点击按钮
  • 脚本在Alliance和Horde(Picks Alliance)之间随机选择
  • 脚本然后在猎人和圣骑士(Picks Paladin)之间随机选择
  • 脚本然后在人类和矮人(Picks Human)之间随机选择
  • 脚本然后在“神圣”,“保护”和“重拾”(防踢)之间随机选择
  • 最后,脚本以HTML格式显示整个结果

在jQuery中这可能吗?有人可以帮助我实现这一目标吗?

1 个答案:

答案 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]),选择一条随机路径,然后根据那条路。

此答案未详细说明如何将这棵树排列成可视图形,这可以通过多种方式完成。