2017-02-27 4 views
-1

私はトリビアゲームを作成します。これは、ユーザーに4つの答えを与えるようにします。配列を使用して質問と回答をこのゲームに適したオプションとして使用していますか?ネストされた配列を作成する適切な方法は何ですか?ネストされた配列を作成しますか?

+0

「良い」と「適切な」はどちらも意見の問題です。質問:[質問:「果物は何ですか?」、答え:2、選択肢:[「ロック」、「紙」、「パイナップル」、「はさみ」のすべての質問を保持するオブジェクトの配列を使用します。 "]}、{質問:"どちらが色ですか? "、答え:1、選択肢:" ennui "、"緑 "、"うま味 "、"寒い "]}]'。 – nnnnnn

+0

オハイオ州大丈夫、私もそれを使用することを考えていたので、私はそれを試してみます。ありがとうございました。 – skyeyl

答えて

0

だから...入れ子配列を作るのは問題ではありませんが、キー=>値型の配列を考えている場合は問題です。その場合はオブジェクトを使う必要がありますあなたが必要としている配列の場合と同じように、そのプロパティをforeachすることができます。あなたは(私はあなたがそう雑学学習ゲームをしたいとまったく同じものであってきた)配列の回答値を格納することができますが、常にオブジェクトを使用し、その

var userAnswer = 'something', 
    item = { 
     question: 'what is a?' 
     answers: [ 'a', 'b', 'c' ] 
     validAnswer: 0; 
    } 

if(userAnswer === item.answers[validAnswer]) { 
    console.log("is valid"); 
} 

いくつかの他の使用のような何かを行うことができます。

var userStats = { 
    status: 'alive', 
    makeDead: function() { 
     this.status = 'dead'; 
    }, 
    bringBackToLife: function() { 
     this.status = 'alive'; 
    }, 
} 
//then you can even do things like... 
userStats.makeDead(); 
console.log(userStats); //user will be dead 
userStats.bringBackToLife(); //user status will be alive 

私はあなただけの質問や質問と回答の(ネストされた[[]])配列を維持するためのアレイで問題ないはずです意味、しかし、あなたは、配列のゲームをプレイし始めている[0](する必要があります質問正しい?)配列[3](無効な答えですか?)そして何?あなたのトリビアゲームが決して成長しないと思うならば、あなたはその解決策に固執するかもしれませんが、もしそれが進化するかもしれないと思うのであれば、オブジェクトを使って物事を整理してください。


更新 あなたがのが/いくつかの質問を含むレッスンを持って保存しましょうしたいならば、あなたは一つの大きなを持つことができても&は、(SOLID規則を調べる)「神のオブジェクトを作るいけない小さなあなたのオブジェクトを維持しよう小さなものの多くを含むオブジェクト、すなわち

//you can make object to store some data and functions 
var LessonItem = function(question){ 
    this.question = question; 
    this.answers = []; 

    this.addAnswer = function(answer){ 
     this.answers.push(answer); 
    }; 
}; 

//you dont need the 'valid' part if there's always just one valid option 
var question1 = new LessonItem('What is?'); 
question1.addAnswer({text: 'It is something', valid: true }); 
question1.addAnswer({text: 'It is something not', valid: false }); 
question1.addAnswer({text: 'It is something 3', valid: true }); 

//and this would be our 'big' object, i.e. to save in json file or whatever 
var lesson = { 
    lesson_subject: 'something', 
    lesson_repeat: 3, 
    lesson_score: 124, 
    lesson_items: [ 
     question1, 
     //question2 
    ] 
}; 
console.log(lesson); 

しかし、ええ、あなたは「店の人に大きな「オブジェクト」を持っているが、それは時間との地獄になるだろう原因のすべてを管理する神のような一つの巨大なオブジェクトを作成しないようにすることができます:あなたはそれをやっている場合でも、私は確信していませんが、あなたはGoogle ChromeのツールコンソールであなたのJavaScriptに貼り付けることができますページをリロードせずに正常に動作しているかどうかを確認してください。(クイックチェックの場合:)

+0

ありがとう、私は私のものが整理されているのが好きなので、私はオブジェクトを使用します。将来、コードを再度修正したり再利用したい場合は、この構造を取ります。また、質問ごとに4つの選択肢で8つの質問をする予定がある場合は、私は8つの異なるオブジェクトまたはすべてのための1つの大きなオブジェクトを持つべきですか?ご協力ありがとうございました。 – skyeyl

+0

ありがとう、ありがとう。私はあなたの助けに感謝します。 – skyeyl

関連する問題