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

Javascript - pulling a random string from an array and getting undefined

本文关键字:字符串 字符 串并 获取 未定义 随机 提取 数组 Javascript      更新时间:2023-09-26

我写了一个简单的脚本来调用数组中的随机字符串,但由于某种原因,它时不时地显示"undefined"。 我已经从控制台调用了数组的第一个和最后一个(0 和 42(,它们拉取了正确的项目。 我使用的是 Chrome 浏览器。

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

功能示例可在以下位置找到:午餐盒

发生这种情况是因为数学运算的顺序不正确。

例如,Math.random()返回 0.01 ,然后乘以 restaurants.length ,可能是 10。 然后你有 0.1,然后减去 1,然后是 -0.9。之后,它向下舍入并变为 -1。 restaurants[-1]undefined.

来得及:

Math.floor(Math.random() * (restaurants.length - 1))]

正确的句子是:

Math.floor(Math.random() * restaurants.length) 

random(( 方法返回一个从 0(含(到但不包括 1(不包括(的随机数。该指数永远不会等于 restaurants.length。