2016-04-13 6 views
1

Ich habe eine Klasse:durch Wörterbuch innerhalb Klassenobjekt in JavaScript Iterieren

class Quizer { 
     // construct new quiz for unique user 
     constructor(quizObj) { 
      this.quiz = quizObj; 
      this.currentQuestionNum = 0; 
      this.userSelections = []; 
     } 
     ... 

    buttonAction(setup) { 
     //var text = this.quiz.question1.question; <-- //works 
     var text = this.quiz[currentQuestionNum].question; // doesnt work 
    } 
} 

Das hier aufgebaut ist:

var quiz = new Quizer(questionObjects); 

Wo questionObjects ist:

var questionObjects = { 
    question1: { 
     question: "Darwin explained his theory of evolution in a book called?", 
     choices: [ 
      "this is the correct answer, choose me!", 
      "On the Origin of Species", 
      "Survival of the Fittest" 
     ], 
     correctAnswer: "On the Origin of Species" 
    }, 

    question2: { 
    ... 
    } 
} 

In buttonAction, mein Ziel ist es, durch FrageObjects zu iterieren und jede Frage zu bekommen. Kann mir jemand bei der Syntax helfen?

+0

Warum nicht alle Fragen in ein Array schieben? Dann können Sie iterieren –

Antwort

3

Sie brauchen so etwas wie diese

for(var key in questionObjects){ 
    // The following gives you the question for the current key 
    questionsObjects[key].question 
} 

Wie es here heißt:

Die für ... in Anweisung iteriert über die zählbaren Eigenschaften eines Objekt, in beliebiger Reihenfolge. Für jede einzelne Eigenschaft können Anweisungen ausgeführt werden.

+0

Dies funktioniert, wenn questionObjects nur Fragen enthält. Wenn es andere Objekte hat, brauchen Sie eine Bedingung. –

+0

Guter Fang, aber in diesem Fall denke ich, dass die 'questionObjects' nur Fragen enthält. Ja, ich weiß, das ist eine Annahme, aber ich denke, das ist der Fall. – Christos

Verwandte Themen