我编写了一个简单的脚本来调用数组中的随机字符串,但由于某种原因,它会偶尔显示“未定义”。我从控制台调用了数组的第一个和最后一个(0和42)并且它们拉出了正确的项目。我正在使用Chrome浏览器。
document.getElementById("pick").addEventListener("click", function({
document.getElementById("restaurant").innerHTML =
restaurants[Math.floor(Math.random() * restaurants.length - 1)];
});
功能示例可在以下位置找到: LunchBOX
答案 0 :(得分:4)
这是因为数学运算的顺序不正确。
例如,Math.random()
返回0.01
,然后再乘以restaurants.length
,可能是10.然后你有0.1,然后减1,然后是-0.9。之后,它向下舍入并变为-1。 restaurants[-1]
为undefined
。
成功:
Math.floor(Math.random() * (restaurants.length - 1))]
答案 1 :(得分:1)
正确的句子是:
Math.floor(Math.random() * restaurants.length)
random()方法返回0(含)之间的随机数,但不包括1(不包括)。索引永远不会等于restaurants.length。