Javascript 如何在一个数组中洗牌一个数组?
设置说明: 我正在建立一个有旋转器的琐事游戏。此微调器分为6个类别(第6个类别是前5个类别的总和)。前5个类别将有自己的问题集。一旦微调器在某个类别上停止,将出现一个表单,该表单将根据其类别依次询问一系列问题。每个问题有三个选择,其中一个是正确的选择 下面是一个简短的问题库数组,以说明我的想法: ```Javascript 如何在一个数组中洗牌一个数组?,javascript,shuffle,Javascript,Shuffle,设置说明: 我正在建立一个有旋转器的琐事游戏。此微调器分为6个类别(第6个类别是前5个类别的总和)。前5个类别将有自己的问题集。一旦微调器在某个类别上停止,将出现一个表单,该表单将根据其类别依次询问一系列问题。每个问题有三个选择,其中一个是正确的选择 下面是一个简短的问题库数组,以说明我的想法: ``` 我认为理想的结构应该是这样的: questionBankArray = [{ category:"first category", questions: [{
我认为理想的结构应该是这样的:
questionBankArray =
[{
category:"first category",
questions:
[{
question1: "What is blank?",
choices: ["choice1","choice2","answer"],
answer: "answer"
},{
question2: "What is blank?",
choices: ["choice1","choice2","answer"],
answer: "answer"
}]
},
{
category: "second category",
questions:
[{
question1: "What is blank?",
choices: ["choice1","choice2","answer"],
answer: "answer"
},{
question2: "What is blank?",
choices: ["choice1","choice2","answer"],
answer: "answer"
}]
}];
创建随机播放功能:
function shuffle(o){
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
开始在外部阵列上循环,并越来越深入,将洗牌功能从最内层应用到外部阵列
for (var category in questionBankArray) {
for (var question in category.questions) {
shuffle(question.choices);
}
shuffle(category);
}
shuffle(questionBankArray);
添加的示例数据结构可能存在重复。
function shuffle(o){
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
for (var category in questionBankArray) {
for (var question in category.questions) {
shuffle(question.choices);
}
shuffle(category);
}
shuffle(questionBankArray);