2017-02-27 5 views
-1

Ich erstelle ein Quizspiel, das dem Benutzer 4 Antworten zur Auswahl gibt. Verwenden Sie ein Array, um die Frage und die Antwort zu einer guten Option für dieses Spiel hinzuzufügen? und wenn ja, was ist der richtige Weg, um ein verschachteltes Array zu erstellen.Erstellen Sie ein verschachteltes Array?

+0

"Gut" und "richtig" sind beide eine Frage der Meinung. Ich würde ein Array von Objekten verwenden, um alle Fragen zu halten: 'Fragen = [{Frage:" Was ist eine Frucht? ", Antwort: 2, Auswahlmöglichkeiten: [" Rock "," Papier "," Ananas "," Schere "]}, {Frage:" Was ist eine Farbe? ", Antwort: 1, Auswahlmöglichkeiten: [" ennui "," grün "," umami "," kalt "]}]'. – nnnnnn

+0

ohh okay, ich habe darüber nachgedacht, das auch zu benutzen, also werde ich das ausprobieren. Vielen Dank. – skyeyl

Antwort

0

Also ... in js ist es kein Problem, ein verschachteltes Array zu machen, aber es ist ein Problem, wenn Sie an Schlüssel => Werttyp des Arrays denken, in diesem Fall müssen Sie ein Objekt verwenden kann seine Eigenschaften wie mit Array tun, wenn Sie müssen. Sie können Antwortwerte in Array speichern (ich habe es mit genau der gleichen Sache, die Sie so Trivia Lernspiel tun wollen), aber man kann immer Objekte verwenden und

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

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

eine andere Nutzung, wie die etwas tun:

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 

ich meine, man sollte für die Aufbewahrung nur Frage oder Frage (verschachtelt [[]]) Array von Antworten mit Array in Ordnung sein, aber dann sind Sie beginnen Spiel Array spielen [0] (sollte Frage richtig?) Array [3] (sollte ungültige Antwort sein?) und was dann? Wenn du immer noch denkst, dass dein Trivia-Spiel niemals wachsen wird, dann bleibst du vielleicht bei dieser Lösung, aber wenn du denkst, dass es sich jemals entwickeln könnte, benutze einfach Objekte, um die Dinge organisiert zu halten.


Update Versuchen Sie, Ihre Objekte zu halten kleine & nicht ‚Gott‘ Objekte machen (aufblicken SOLID-Regeln), aber wenn Sie lassen wollen sagen, speichern/eine Lektion habe einige Fragen enthalten, dann könnten Sie eine haben große Objekt viele kleine enthalten, dh

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

aber ja, können Sie große ‚Objekt‘ auf ‚Store‘ andere haben, aber vermeiden Sie Gott-wie eine große Objekte zu schaffen alles Verwaltung weil es die Hölle mit der Zeit geworden : D auch bin ich nicht sicher, ob Sie das tun, aber Sie können in Ihrem Javascript in Google Chrome Tools Konsole einfügen und prüfen Sie, ob es richtig funktioniert, ohne Seite neu zu laden ... (für schnelle Kontrollen :))

+0

Vielen Dank, ich werde Objekte verwenden, denn ich mag meine Sachen organisiert und wenn ich den Code in Zukunft ändern oder erneut verwenden möchte, habe ich diese Struktur, um zurück zu gehen. Auch wenn ich 8 Fragen mit 4 Antwortmöglichkeiten für jede Frage habe. Sollte ich 8 verschiedene Objekte oder ein großes Objekt für alle haben? Danke für Ihre Hilfe. – skyeyl

+0

Ich werde, vielen Dank. Ich schätze Ihre Hilfe. – skyeyl

Verwandte Themen