Javascript 如何在一个数组中洗牌一个数组?

Javascript 如何在一个数组中洗牌一个数组?,javascript,shuffle,Javascript,Shuffle,设置说明: 我正在建立一个有旋转器的琐事游戏。此微调器分为6个类别(第6个类别是前5个类别的总和)。前5个类别将有自己的问题集。一旦微调器在某个类别上停止,将出现一个表单,该表单将根据其类别依次询问一系列问题。每个问题有三个选择,其中一个是正确的选择 下面是一个简短的问题库数组,以说明我的想法: ``` 我认为理想的结构应该是这样的: questionBankArray = [{ category:"first category", questions: [{

设置说明: 我正在建立一个有旋转器的琐事游戏。此微调器分为6个类别(第6个类别是前5个类别的总和)。前5个类别将有自己的问题集。一旦微调器在某个类别上停止,将出现一个表单,该表单将根据其类别依次询问一系列问题。每个问题有三个选择,其中一个是正确的选择

下面是一个简短的问题库数组,以说明我的想法: ```


我认为理想的结构应该是这样的:

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);