【问题标题】:Javascript: Where do I put Math.floor(Math.random)?Javascript:我应该把 Math.floor(Math.random) 放在哪里?
【发布时间】:2014-06-28 20:26:46
【问题描述】:

好吧,我显然是一个极端的新手,所以要温柔。在学习 Javascript 时,我正在创建一个测验以更好地帮助我保留和练习信息。以下是到目前为止我的代码示例(此问题的实际数组已缩短)。

我在学习进度的这一点上工作得很好,除了我似乎无法使用 Math.floor(Math.random()) 来创建非线性问答体验。

var qAndA = [["What starts a variable?", "var"], 
["What creates a popup with text and an OK button?", "alert()"],  
["What is the sign for a modulo?", "%"]];
function askQuestion(qAndA) {
    var answer = prompt(qAndA[0], " ");    
    if (answer === qAndA[1]) { 
        alert("yes");
    } else {
        alert("No, the answer is " + qAndA[1]);
    }
}
for (i = 0; i < qAndA.length; i++) {
    askQuestion(qAndA[i]);
} 

我在这里和其他地方查看了所有可能的答案,但没有任何解决这个具体问题的方法。

有人可以帮帮我吗?

【问题讨论】:

标签: javascript math random floor


【解决方案1】:

在数组中选择随机元素的最简单方法:

var randomIndex = Math.floor(Math.random() * qAndA.length)
var randomQuestion = qAndA[randomIndex]

现在把它放在一个循环中:

var questionsToAsk = qAndA.length
for (i = 0; i < questionsToAsk; i++) {
    var randomIndex = Math.floor(Math.random() * qAndA.length)
    var randomQuestion = qAndA[randomIndex]
    askQuestion(randomQuestion);
} 

【讨论】:

  • 谢谢尼古拉!非常感谢。
【解决方案2】:

使用| 0 会更快

const randomIndex = Math.random() * qAndA.length | 0;
const randomQuestion = qAndA[randomIndex];

| 0 是 0 的二进制,JavaScript 规范有效地表示结果在 | 发生之前转换为整数。请注意,| 0Math.floor 不同。 | 0 舍入为 0,而 Math.floor 舍入。

         | 0   Math.floor         
------+------+------------
  2.5 |   2  |   2
  1.5 |   1  |   1
  0.5 |   0  |   0
 -0.5 |   0  |  -1
 -1.5 |  =1  |  -2
 -2.5 |  -2  |  -3

【讨论】:

    猜你喜欢
    • 2020-09-30
    • 2016-08-25
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2017-11-30
    相关资源
    最近更新 更多