javascript - 从数组中删除重复的随机数
问题描述
好的,所以我正在遍历页面 (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”有关,但我不确定。
解决方案
您可以通过以下步骤来做到这一点:
在循环之前,获取数组的副本otherAnswers
,以避免您使用以下内容破坏它。例如,使用扩展语法:
var remainingAnswers = [...otherAnswers];
然后 - 仍然在循环之前 - 随机打乱复制的数组。从这里获取洗牌代码。
shuffle(remainingAnswers);
i
最后,在您的循环中,使用您已经拥有的索引访问该洗牌数组中的值:
var other = remainingAnswers[i];
推荐阅读
- reactjs - 在 React 中,如果将依赖项更改为相同的值,useEffect 会被触发吗?
- r - 限制环视范围
- javascript - 通过ajax发送数据到php文件
- node.js - Nodejs 智能灯异步循环
- c# - 嗨,在 Asp.Net 核心中创建类时需要一些帮助
- java - Hibernate 在应用程序控制台中不起作用
- terminal - PyCharm 终端不显示目录路径
- redirect - Varnish - 将请求重定向到另一个网站/网络服务器
- spring-integration - Spring 集成出站适配器
- kotlin - 如何在另一个查询中使用 firestore 查询结果。科特林