Javascript - 从数组中提取随机字符串并获取未定义

时间:2016-02-03 15:24:45

标签: javascript arrays math

我编写了一个简单的脚本来调用数组中的随机字符串,但由于某种原因,它会偶尔显示“未定义”。我从控制台调用了数组的第一个和最后一个(0和42)并且它们拉出了正确的项目。我正在使用Chrome浏览器。

document.getElementById("pick").addEventListener("click", function({
  document.getElementById("restaurant").innerHTML = 
    restaurants[Math.floor(Math.random() * restaurants.length - 1)];
});

功能示例可在以下位置找到: LunchBOX

2 个答案:

答案 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。