从数组中删除重复的随机数

时间:2019-08-05 16:08:44

标签: javascript dom

好的,所以我遍历页面(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”有关,但我不确定。

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤进行操作:

在循环之前,请复制otherAnswers数组的副本,以免您破坏后面的内容。例如,使用传播语法:

var remainingAnswers = [...otherAnswers];

然后-仍在循环之前-随机混洗复制的数组。从here中获取随机播放代码。

shuffle(remainingAnswers);

最后,在循环中,使用已经拥有的索引i访问该混洗数组中的值:

var other = remainingAnswers[i];