Reputation: 234
I have an object like so:
answers = {
"q1" : {
"selected": "a",
"correct": "b"
},
"q2": {
"selected": "c",
"correct": "d"
},
etc...
}
how do I compare selected and correct?
i'm trying
for (let key in answers) {
if (key.selected === key.correct) {
correct++;
} else {
incorrect++;
}
}
but it doesn't work. I keep getting all questions marked correct. Pretty sure I need to do something else to go down a level in the object but not sure how to do it.
if I do answers[key].selected === answers[key].correct
all come out as incorrect
Upvotes: 0
Views: 253
Reputation: 12085
you need to use it like this
answers = {
"q1" : {
"selected": "a",
"correct": "b"
},
"q2": {
"selected": "c",
"correct": "c"
}
};
var correct=0;incorrect=0;
for (let key in answers) {
if (answers[key].selected === answers[key].correct)
{
correct++;
}
else
{
incorrect++;
}
}
console.log(correct);
console.log(incorrect);
Upvotes: 0
Reputation: 569
You want:
for (let key in answers) {
if (answers[key]["selected"] === answers[key]["correct"]) {
correct++;
} else {
incorrect++;
}
}
Upvotes: 0
Reputation: 119847
Well... you're comparing the keys and not the values, where selected
and correct
will be undefined
for both cases thus correct. You probably meant:
if (answers[key].selected === answers[key].correct) {
Upvotes: 1