好的,所以我遍历页面(3)上所有具有“可能”类的元素。然后,我创建一个名为“ other”的变量,该变量从数组otherAnswers中随机获取一个值。然后,我采用这些值并将其作为文本放入受尊重的元素中。唯一的事情是,在大多数情况下,循环从otherAnswers数组中选择相同的变量(有时一次,有时两次,其他三个,而几乎没有一次)。如何确保.each一旦遍历数组中的值之一,就不会再次得到它?
$('.possible').each(function(i, obj) {
var other = otherAnswers[Math.floor(Math.random()*otherAnswers.length)];
$(this).text(other);
//otherAnswers.splice(this);
});
我已经尝试了注释过的代码,但这只是删除了值,因此它们不会显示在我的页面上。我感觉它与函数中的变量“ i”有关,但我不确定。
答案 0 :(得分:0)
您可以按照以下步骤进行操作:
在循环之前,请复制otherAnswers
数组的副本,以免您破坏后面的内容。例如,使用传播语法:
var remainingAnswers = [...otherAnswers];
然后-仍在循环之前-随机混洗复制的数组。从here中获取随机播放代码。
shuffle(remainingAnswers);
最后,在循环中,使用已经拥有的索引i
访问该混洗数组中的值:
var other = remainingAnswers[i];