Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
随机数组选择器-Javascript_Javascript_Html_Arrays - Fatal编程技术网

随机数组选择器-Javascript

随机数组选择器-Javascript,javascript,html,arrays,Javascript,Html,Arrays,我正在为一个小项目编码,但我的随机数组选择器不工作 var btnarray = [xfn.left, xn.left, xnln.left, xln.left, xnn.left]; (这是数组) (这是随机选择器变量) 当我开始时,rand值等于btnarray[0] 有人能帮我吗 哦,我完全知道变量都是不同的 谢谢因为数组的长度是5,所以需要将随机函数的值乘以该数字。更好的方法是使用length属性 var rand = btnarray[Math.floor(Math.random()

我正在为一个小项目编码,但我的随机数组选择器不工作

var btnarray = [xfn.left, xn.left, xnln.left, xln.left, xnn.left];
(这是数组)

(这是随机选择器变量)

当我开始时,rand值等于btnarray[0]

有人能帮我吗

哦,我完全知道变量都是不同的


谢谢

因为数组的长度是5,所以需要将随机函数的值乘以该数字。更好的方法是使用
length
属性

var rand = btnarray[Math.floor(Math.random() * btnarray.length)];

您不应该使用
Math.floor
,因为这将很难获取
btnarray
数组中的最后一个元素,您需要准确地获取数字
btnarray.length
,才能获取该元素。另外,
floor
倾向于降低概率结果,并且看起来您被某个值卡住了,因为它的阈值迫使您使用小于或等于某个数字的最大整数

您应该使用
round
取而代之,这将使每个数组元素的概率相等,并将为您提供更明显的随机索引。试试这个,它已经用一个虚拟的
btnarray
数组变量进行了测试,效果很好

var rand = btnarray[Math.round(Math.random() * btnarray.length)];

如果在html文档的head标记中添加此项:

<script src="https://randojs.com/1.0.0.js"></script>

我通常会使用它,因为它可以处理几乎所有您需要的随机功能,而且非常简单易读。

您认为它不起作用是什么意思?代码按预期工作。您需要更改的唯一一件事是在随机
btnarray[Math.floor(Math.random()*btnarray.length)]中使用数组长度这是否回答了您的问题?不要发布代码中的两行代码,而是将其放在一个上下文中:这两行都在一个函数中,一行接一行吗?rand var每次与xfn.left相等。
<script src="https://randojs.com/1.0.0.js"></script>
var randomValue = rando(btnarray).value