我正在编写一个模拟洗牌机的程序。该程序应在数组中随机选择一个随机图像,并将其显示在屏幕上。然后,它将在再次运行之前从阵列中删除该图像。我遇到的问题是存储随机数的值,因此我可以从数组中删除所述数组位置。我很确定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();
答案 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();