从数组中检索对象值 - Javascript

时间:2016-02-18 14:50:07

标签: javascript

快速解释为什么我必须使用我正在使用的语法,我下面的代码有效,但我不明白为什么......

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'中第二个元素的问题值?

我觉得后两者中的一个应该工作,我的语法必定是错误的,但也许我只是误解了这段代码的功能。任何见解将不胜感激......

2 个答案:

答案 0 :(得分:1)

你有一个数组,其中包含许多数组,每个数组都包含一个对象。因此,例如allQuestionsArray[1][0].question访问allQuestionsArray中的第一个数组,然后访问其中第一个子对象。

答案 1 :(得分:1)

您正在使用数组数组。如果您只是拥有对象数组,那么您的第二个选项就可以了。但是,您有一个数组数组,每个数组包含一个对象。这就像是:

之间的区别

var array = [ {} , {} , {} , {} , {} ];

和此:

var newAray = [ [{}] , [{}] , [{}] , [{}] ];

由于每个元素周围有额外的环绕层,因此必须使用更复杂的访问方式。例如,array[1].question可能正确返回,但您必须使用不同的嵌套数组。

newArray[1][0].question

这将访问数组中的第二个元素(数组),然后访问此数组中的第一个元素(即对象),然后访问该对象的.question属性。