如何高效地随机选择数组项目而不重复
您的代码创建一个最近选择的数组以防止重复,并调用递归函数当所选项目位于最近的选择中时,命名为 ChooseName()。这种方法可以确保唯一性,但如果数组大小有限,可能会导致无限循环。
这是一个递归函数吗?
是的,chooseName() 会调用自身找到一个独特的选择。递归使函数能够迭代数组项,直到找到最近选择中没有的项。
提高效率
要避免无限循环,请考虑另一种方法答案中建议:
<code class="javascript">function randomNoRepeats(array) { var copy = array.slice(0); return function() { if (copy.length < 1) { copy = array.slice(0); } var index = Math.floor(Math.random() * copy.length); var item = copy[index]; copy.splice(index, 1); return item; }; }</code>
此函数生成原始数组的副本并从中随机选择一个项目。一旦使用了所有项目,它就会创建原始数组的新副本,即使数组已耗尽,也能确保唯一的选择。
以上是如何高效地选择不重复的随机数组项?的详细内容。更多信息请关注PHP中文网其他相关文章!