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

标签 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

最佳答案

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

例如,Math.random() 返回 0.01,然后将其乘以 restaurants.length,可能是 10。然后您有0.1,那么减1就是-0.9。之后它向下舍入并变为-1。 restaurants[-1]未定义

做到:

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

关于Javascript - 从数组中提取随机字符串并得到未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180997/

相关文章:

javascript - 如何运行多个js服务器

ios - 类型 '[String]' 的不可变值仅具有变异成员

arrays - 从 ColdFusion 中的多个列表中获取所有可能的唯一值组合

ios - 数组和表格 View : only add new items

c - 关于使用数组和位 vector 的集合

java - 使用泊松分布生成一个范围内的随机数

math - x86-64 大整数表示?

javascript - 单击时调用函数,除非单击发生在某些元素上

javascript - Vue 组件在 <template> html 标签中不可见

javascript - Node.js:以 win1251 字符集发送 http 请求