1

まず第一に、私の英語で申し訳ありません。問題を十分に説明できることを願っています。

テーマベースのクイズを作成したいのですが、テーマ、質問、および回答を使用して配列を構築するための支援が必要です。これまでのところ、私はこれを得ました:

var aarhus={
       question: 'Is this a aarhus question?',
       answer1:'yes',
       answer2:'no',
       answer3:'I dunno',
       answer4:'stfu',
       correctAnswer:'stfu'
       };

var multimedia={
       question: 'Is this a multimedia question?',
       answer1:'yes',
       answer2:'no',
       answer3:'I dunno',
       answer4:'stfu',
       correctAnswer:'stfu'
       };

var general={
       question: 'Is this a general question?',
       answer1:'yes',
       answer2:'no',
       answer3:'I dunno',
       answer4:'stfu',
       correctAnswer:'stfu'
       };

テーマを表す 3 つの配列があります。質問、4 つの可能な回答、および正解が保存されます。問題は、各テーマに 1 つの質問しかないことです。私の質問は、テーマに質問を追加するにはどうすればよいですか? テーマ内の回答で任意の質問にアクセスできる必要があります(テーマごとに独自の回答を持つ2つの質問としましょう)。

ありがとうございました!

4

3 に答える 3

3

ちなみに、これらは「プレーン」オブジェクトであり、配列ではありません。ただし、ネストされたオブジェクトと配列を使用して、質問をグループ化できます。

var questions =
{
    theme1:
    [
        {
            question: "this is question 1",
            answers: ["one", "two", "three"],
            correct: "two"
        },
        {
            question: "this is question 2",
            answers: ["one", "two", "three"],
            correct: "three"
        }
    ],
    theme2:
    [
        {
            question: "this is question 1",
            answers: ["one", "two", "three"],
            correct: "two"
        },
        {
            question: "this is question 2",
            answers: ["one", "two", "three"],
            correct: "three"
        }
    ]
}

//To access the second question of theme 2
questions.theme2[1].question
于 2012-12-15T09:12:18.760 に答える
1

テーマを配列にするだけです。

var general=[{
   question: 'Is this a general question?',
   answer1:'yes',
   answer2:'no',
   answer3:'I dunno',
   answer4:'stfu',
   correctAnswer:'stfu'
   }];

次に、次を使用してテーマに新しい質問を追加できますarray.push

general.push({
   question: 'Is this a second general question?',
   answer1:'yes',
   answer2:'no',
   answer3:'I dunno',
   answer4:'stfu',
   correctAnswer:'stfu'
});

他の配列と同じようにアクセスします。

var questionIndex = 1; // question #2 in the theme
console.log(general[questionIndex].question); // "Is this a second general question?"
于 2012-12-15T09:10:30.570 に答える
1

Maybe this solution will help:

<html><head><title>Test</title></head>
<script>
var MULTIMEDIA = 'Multimedia';

var question1 = {
   question: 'Is this a multimedia question1?',
   answer1:'yes',
   answer2:'no',
   answer3:'I dunno',
   answer4:'stfu',
   correctAnswer:'stfu'
   };
var question2 = {
   question: 'Is this a multimedia question2?',
   answer1:'yes',
   answer2:'no',
   answer3:'I dunno',
   answer4:'stfu',
   correctAnswer:'stfu'
   };
var question3 = {
   question: 'Is this a multimedia question3?',
   answer1:'yes',
   answer2:'no',
   answer3:'I dunno',
   answer4:'stfu',
   correctAnswer:'stfu'
   };

var questions = [];    
questions[0] = question1;
questions[1] = question2;
questions[2] = question3;

var theme = {
questions : questions
}
var themes = [];
themes[MULTIMEDIA] = theme;
</script>
<body>
<label>

<script>
var questionNo = 0;
document.write(themes[MULTIMEDIA].questions[questionNo].question + '<br>');
document.write('<ul>');
document.write('<li>' + themes[MULTIMEDIA].questions[questionNo].answer1 + '</li>');
document.write('<li>' + themes[MULTIMEDIA].questions[questionNo].answer2 + '</li>');
document.write('<li>' + themes[MULTIMEDIA].questions[questionNo].answer3 + '</li>');
document.write('</ul>');

</script>

</label>
</body>
</html>
于 2012-12-15T09:28:34.813 に答える