2017-05-15 5 views
0

値の比較しますか?は、ネストされたオブジェクトが、私はそうのような物を持っている

私は

for (let key in answers) { 
    if (key.selected === key.correct) { 
     correct++; 
    } else { 
     incorrect++; 
    } 
} 

をしようとしているが、それは動作しません。私はすべての質問を正しいものにしています。私はオブジェクトのレベルを下ろすために何か他のことをする必要がありますが、それを行う方法がわかりません。

私はanswers[key].selected === answers[key].correctすべてあなたが望むように間違って

+1

のようにそれを使用する必要がありますか? –

+0

'key'は現在のキーの文字列です。 'for-in'がどのように動作するかを見てください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in –

+0

[Javascriptでオブジェクトを反復する]の可能な複製(http://stackoverflow.com/questions/8389148/iterating-over-objects-in-javascript) –

答えて

1

はまあ...あなたがキーとないselectedcorrectがためundefinedされる値を、比較しています両方の場合が正しい。あなたはおそらく意味:

if (answers[key].selected === answers[key].correct) { 
+1

私たちはこれに答えるか、それとも重複して閉じるべきでしょうか?おそらく少なくとも10個の質問があります。 –

+0

これは、回答オブジェクトで値が一致していても、すべての回答が正しくないという結果に終ります。私は他の何かが間違っている場合、任意のアイデア? – Vidro3

+0

@ Vidro3:WRT 'answers [key] .selected === answers [key] .correct'あなたのデータを見てください。オブジェクトのなかに '.selected'プロパティーは' .correct'プロパティーと同じものです。私たちはあなたが実際に必要としていることを超えて、どのような振る舞いをするべきかを記述した完全ではあるが最小限のデモを投稿していないので、実際に必要なものはわかりません。 –

0

を出ない​​場合:

for (let key in answers) { 
    if (answers[key]["selected"] === answers[key]["correct"]) { 
    correct++; 
    } else { 
    incorrect++; 
    } 
} 
+1

'answers.key.selected'は目的のプロパティを与えませんし、いくつかは' let'宣言を削除しました理由。 –

+0

@squint、そうです。修正しました。 –

0

あなたは `答え[キー] .selected`と`答え[キー] .correct`多分枚この

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

関連する問題