如何为数组随机化这些问题

How to randomize these questions for arrays?

本文关键字:问题 随机化 数组      更新时间:2023-09-26
var quiz = [
        {
            "question"      :   "Q1: Who is the best scientist?",
            "choices"       :   [
                                    "Sir Isaac Newton",
                                    "Albert Einstein",
                                    "Nicolaus Copernicus",
                                    "Ralph Waldo Emmerson"
                                ],
            "correct"       :   "Albert Einstein",
            "explanation"   :   "Albert Einstein drafted the special theory of relativity.",
        },
        {
            "question"      :   "Q2: Who looks better?",
            "choices"       :   [
                                    "Thomas",
                                    "Dwight Howard",
                                    "Benjamin Parker",
                                    "Jeremy Lincoln"
                                ],
            "correct"       :   "Benjamin Parker",
            "explanation"   :   "He has better features to start with",
        },
        {
            "question"      :   "Q3: What event began on December 25, 1990?",
            "choices"       :   [
                                    "Christmas",
                                    "Chinese New Year",
                                    "American Civil War began",
                                    "Declaration of Independence"
                                ],
            "correct"       :   "Christmas",
            "explanation"   :   "Duh, Christmas? I think this needs no future explaination",
        },
    ];

function loadQuestion(){
        //set temporary variable for creating radio buttons
        var radioButton;
        //clear out radio buttons from previous question
        document.getElementById('content').innerHTML = "";
        //loop through choices, and create radio buttons
        for(var i=0; i < quiz[currentQuestion]["choices"].length; i++){
            radioButton  = document.createElement('input');
            radioButton.type = 'radio';
            radioButton.name = 'quiz';
            radioButton.id = 'choice'+ (i+1);
            radioButton.value = quiz[currentQuestion]["choices"][i];
            //create label tag, which hold the actual text of the choices
            var label = document.createElement('label');
            label.setAttribute('for','choice'+ (i+1));
            label.innerHTML = quiz[currentQuestion]["choices"][i];
            //create a <br> tag to separate options
            var br = document.createElement('br');
            //attach them to content. Attach br tag, then label, then radio button
            document.getElementById('content').insertBefore(br);
            document.getElementById('content').insertBefore(label, br);
            document.getElementById('content').insertBefore(radioButton, label);
        }
var currentQuestion = Math.floor(Math.random() * myArray.length);

创建一个随机数生成器:

var i = quiz.length; var n = Math.floor((Math.random() * i)); var question = quiz[n]

来源:
Javascript随机,
Array.length .

下面是所有quiz项的循环,并使用"How to randomize (shuffle) a JavaScript array"解决方案来随机化选项数组:

var quiz = [{"question": "Q1: Who is the best scientist?","choices" : ["Sir Isaac Newton","Albert Einstein","Nicolaus Copernicus","Ralph Waldo Emmerson"],"correct" : "Albert Einstein","explanation" : "Albert Einstein drafted the special theory of relativity.",},{"question": "Q2: Who looks better?","choices" : ["Thomas","Dwight Howard","Benjamin Parker","Jeremy Lincoln"],"correct" : "Benjamin Parker","explanation" : "He has better features to start with",},{"question": "Q3: What event began on December 25, 1990?","choices" : ["Christmas","Chinese NewYear","American Civil War began","Declaration of Independence"],"correct" : "Christmas","explanation" : "Duh, Christmas? I think this needs no future explaination"}],
    shuffleArray = function (array) {
      for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1)),
            temp = array[i];
        array[i] = array[j];
        array[j] = temp;
      }
      return array;
    },
    loadQuestions = function (quiz) {
      quiz.forEach(function(item) {
        var choices = shuffleArray(item.choices);
        console.log(item.question);
        choices.forEach(function(choice) {
          console.log('-', choice);
        });
      });
    }
;
// Load questions
loadQuestions(quiz);