javascript - 在循环中不重复数组的数组随机值
问题描述
如何使用 JavaScript 遍历数组中的所有条目?我有一个数组,我想要 arrRand 变量中的另一个随机列表数组,然后执行我的进一步代码。
list1 = ['aceClub', 'twoClub'];
list2 = ['fourDiamond', 'aceClub', 'fourHeart', 'twoDiamond'];
list3 = ['aceHeart', 'aceClub', 'aceHeart', 'aceDiamond'];
list4 = ['aceDiamond', 'fourSpade', 'twoClub', 'fourHeart'];
list5 = ['fourClub', 'twoSpade' , 'twoHeart', 'aceDiamond'];
list6 = ['twoHeart', 'twoDiamond' , 'twoSpade' , 'aceClub'];
var arr = [list1,list2,list3,list4, list5,list6];
我想要这个随机数组。
var arrRand = [list5,list6,list2,list4, list3,list1];
var arrRand = [list3,list2,list6,list5, list1,list4];
var arrRand = [list1,list5,list2,list4, list6,list2];
接着
if(arrRand[0] == list1){
//mycode
}
if(arrRand[1] == list2){
//myCode
}
....
解决方案
Javascript 中数组的标准洗牌似乎是 Fisher-yates 洗牌 -从这个答案
let list1 = ['aceClub', 'twoClub'];
let list2 = ['fourDiamond', 'aceClub', 'fourHeart', 'twoDiamond'];
let list3 = ['aceHeart', 'aceClub', 'aceHeart', 'aceDiamond'];
let list4 = ['aceDiamond', 'fourSpade', 'twoClub', 'fourHeart'];
let list5 = ['fourClub', 'twoSpade', 'twoHeart', 'aceDiamond'];
let list6 = ['twoHeart', 'twoDiamond', 'twoSpade', 'aceClub'];
let arr = [list1, list2, list3, list4, list5, list6];
let arrRand = shuffle(arr);
console.log(arrRand);
function shuffle(array) {
let currentIndex = array.length;
let temporaryValue;
let randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
推荐阅读
- javascript - javascript中的http请求处理
- excel - 通过 Matlab GUI 在 Excel 中提取特定变量
- git - 在合并到 master 时,我从本地分支中丢失了一个完整的目录。如何找回那些丢失的文件?
- reference - 可变引用生命周期与不可变引用生命周期
- c# - 调用一个在后台运行的方法,仍然让用户在表单中工作
- php - Wordpress 产品数据刮板/API
- bash - Bash fastCGI 在没有给出参数时显示很多信息
- vb.net - VB ASP.NET Web 应用程序属性创建为类库?
- svn - SVN 合并冲突标记没有共同祖先(“diff3”)
- c# - 代码运行时未设置变量值。在代码如下