Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialBenjamin Cohen
Full Stack JavaScript Techdegree Student 6,045 PointsI continue to get the following error: TypeError: quiz[i] is undefined
function print(message) {
document.write(message);
}
var quiz = [
['Who was the first president?', 'george washington'],
['Who was the sixteenth president?', 'abraham lincoln'],
['Who is the current president?', 'donald trump']
];
var answer;
var correctAnswer = 0;
for (var i = 0; i <= quiz.length; i += 1) {
answer = prompt(quiz[i][0]).toLowerCase();
if (answer === quiz[i][1]) {
correctAnswer += 1;
print("You got question " + (i+1) + " right. Correct Answers: " + correctAnswer + " <br>");
}
}
print("You got " + correctAnswer + " questions right.")
2 Answers
jamesjones21
9,260 Pointsthe issue lays within the the conditional part of the for loop, it itterates over the array and then i becomes 3, so in the array there is no key 3 inside of the quiz array. (keys are only 0,1,2) so that is why you are getting undefined. If you remove the equal sign just after the less than, it should then output the correct answers for you and undefined should not show:
function print(message) {
document.write(message);
}
var quiz = [
['Who was the first president?', 'George Washington'],
['Who was the sixteenth president?', 'Abraham Lincoln'],
['Who is the current president?', 'Donald Trump']
]
var answer;
var correctAnswer = 0;
for (var i = 0; i < quiz.length; i += 1) {
answer = prompt(quiz[i][0]).toLowerCase();
if (answer === quiz[i][1]) {
correctAnswer += 1
}
}
print("You got " + correctAnswer + " questions right.")
Benjamin Cohen
Full Stack JavaScript Techdegree Student 6,045 PointsThank you James, that solved it.
jamesjones21
9,260 PointsI would also try and debug it in the browser debugger, and try and step over it. Then for each question is asked you can hover your cursor over i, So after the last one entry in the array i is 2 then becomes 3 so i is 3 and length of the array is 3 so it would jump into the loop, but then cannot read anything as key 3 doess't exist.
Glad to help
Christina King
PHP Development Techdegree Graduate 21,136 PointsHi Benjamin,
what error are you receiving? I would like to try and figure this out with you.
Benjamin Cohen
Full Stack JavaScript Techdegree Student 6,045 PointsBenjamin Cohen
Full Stack JavaScript Techdegree Student 6,045 PointsThe for loop works when it's iterating through the 2D array, meaning I see this as I answer the questions;
You got question 1 right. Correct Answers: 1 You got question 2 right. Correct Answers: 2 You got question 3 right. Correct Answers: 3
But when I try and print the 'correctAnswer' variable after the loop ends I get an error.