快速解释为什么我必须使用我正在使用的语法,我下面的代码有效,但我不明白为什么......
var allQuestionsArray = [
[{question: "This is question 1", answer: 0}],
[{question: "This is question 2", answer: 3}],
[{question: "This is question 3", answer: 2}],
[{question: "This is question 4",answer: 1}]
];
for (i=0; i < allQuestionsArray.length; i++) {
var question = allQuestionsArray[1][0].question;
var possibleAnswers = allQuestionsArray[1][0].answer;
document.getElementById("qnAsked").innerHTML = question;
document.getElementById("answerChoices").innerHTML = possibleAnswers;
}
我的查询是为什么我需要使用“allQuestionsArray [1] [0] .question;”而不是“allQuestionsArray [1] .question;” (或“allQuestionsArray [0] [1] .question;”)检索'allQuestionsArray'中第二个元素的问题值?
我觉得后两者中的一个应该工作,我的语法必定是错误的,但也许我只是误解了这段代码的功能。任何见解将不胜感激......
答案 0 :(得分:1)
你有一个数组,其中包含许多数组,每个数组都包含一个对象。因此,例如allQuestionsArray[1][0].question
访问allQuestionsArray
中的第一个数组,然后访问其中第一个子对象。
答案 1 :(得分:1)
您正在使用数组数组。如果您只是拥有对象数组,那么您的第二个选项就可以了。但是,您有一个数组数组,每个数组包含一个对象。这就像是:
之间的区别 var array = [ {} , {} , {} , {} , {} ];
和此:
var newAray = [ [{}] , [{}] , [{}] , [{}] ];
由于每个元素周围有额外的环绕层,因此必须使用更复杂的访问方式。例如,array[1].question
可能正确返回,但您必须使用不同的嵌套数组。
newArray[1][0].question
这将访问数组中的第二个元素(数组),然后访问此数组中的第一个元素(即对象),然后访问该对象的.question
属性。