如何访问math.random计算的值?

时间:2019-06-07 19:12:48

标签: javascript html

我正在编写一个模拟洗牌机的程序。该程序应在数组中随机选择一个随机图像,并将其显示在屏幕上。然后,它将在再次运行之前从阵列中删除该图像。我遇到的问题是存储随机数的值,因此我可以从数组中删除所述数组位置。我很确定math.random计算需要在函数中,但是我很难用该值来随机化数组位置,同时存储该随机值。

var shuffler = {
 cards: [...]
displayCard: function() {
   document.getElementById("card-1").style.backgroundImage = 'url(' + 
shuffler.cards[shuffler.randomizer()] + ')';
},
  randomizer: function() {
    Math.floor(Math.random() * shuffler.cards.length) = randomized;
    return this.randomized;
    shuffler.cards.splice(randomized, 1)
  }
}
shuffler.displayCard();

4 个答案:

答案 0 :(得分:1)

您不能正确存储该值,因为以下行有误

Math.floor(Math.random() * shuffler.cards.length) = randomized;

=登录编程与数学中的=不同。它只是将右侧的值分配给左侧。因此,您应该这样做:

this.randomized = Math.floor(Math.random() * shuffler.cards.length);

答案 1 :(得分:0)

在代码片段中,从数组中进行拼接之前您要返回代码,从而使其变为无法访问的无效代码。

就回答这个问题的标题而言,您本来就是以简单的方式将随机数描述为变量的,但您需要具有适当的语法。

答案 2 :(得分:0)

检查您的语法

randomizer: function() {
    Math.floor(Math.random() * shuffler.cards.length) = randomized;
    return this.randomized;
    shuffler.cards.splice(randomized, 1)
}

我认为将会

randomizer: function() {
    this.randomized = Math.floor(Math.random() * this.cards.length);
    this.displayCard(this.randomized);
    shuffler.cards.splice(this.randomized, 1);
    return this.randomized;
}

,并且还需要在shuffler对象中声明randomized属性。

您还需要修复displayCard方法。

displayCard: function(index) {
   document.getElementById("card-1").style.backgroundImage = 'url(' + 
shuffler.cards[index] + ')';
}

答案 3 :(得分:0)

有两个问题。第一个是随机分配。看那一行

Math.floor(Math.random() * shuffler.cards.length) = randomized;

在这里,赋值表达式的LeftHandSide是一个错误的表达式。应该是

let randomized = Math.floor(Math.random() * shuffler.cards.length);

第二个问题是您在splice()移到return之前使用return

最后一个问题是您正在对象的方法内部使用变量名。您应该使用this而不是shuffler。最终代码如下所示。

var shuffler = {
 cards: [...]
 displayCard: function() {
   document.getElementById("card-1").style.backgroundImage = 'url(' + 
   this.cards[this.randomizer()] + ')';
 },
 randomizer: function() {
    let randomized =  Math.floor(Math.random() * shuffler.cards.length);
    this.cards.splice(randomized, 1)
    return randomized;
 }
}
shuffler.displayCard();