JavaScript JavaScript Loops, Arrays and Objects Tracking Multiple Items with Arrays Build a Quiz Challenge, Part 2 Solution

Daniel Gzel
Daniel Gzel
2,927 Points

so I was working on this for some time. UNDEFINED

Hello, so I was working on this for some time. Figured out how to create new variables to store correct/incorrect answers then I have create for loop with display order. BUT... my code still printed out UNDEFINED, so I loaded up solution with hope of finding an answer, and I realized that Dave did it "slightly" different. I have changed most of my code but still there is the same problem :( please find code below, im giving up:

var questions = [ ['How many states are in the United States?', 50], ['How many continents are there?', 7], ['How many legs does an insect have?', 6] ]; var correctAnswers = 0; var question; var answer; var response; var html = ""; var correct = []; var wrong = [];

function buildList(arr) { var listHTML = "<ol>"; for (var y = 0; y < arr.length; y+=1) { listHTML += "<li>" + arr[i] + "</li>" } listHTML += "</ol>" return listHTML; }

function print(message) { document.write(message); }

for (var i = 0; i < questions.length; i += 1) { question = questions[i][0]; answer = questions[i][1]; response = prompt(question); response = parseInt(response); if (response === answer) { correctAnswers += 1; correct.push(question); } else wrong.push( question );

}

html = "You got " + correctAnswers + " question(s) right." html += "<h2>asd</h2>"; html += buildList(correct); html += "asdasd wrong"; html += buildList(wrong);

print(html);

1 Answer

Steven Parker
Steven Parker
182,438 Points

The loop is using "y" as the step variable, but the index into the array is using "i":

  for (var y = 0; y < arr.length; y += 1) {
    listHTML += "<li>" + arr[i] + "</li>";    // <-- try arr[y] instead
  }