我遇到了以下嵌套数组,并且对它为什么使用这种特殊语法感到困惑:
var allQuestions = [{
question: "Which company first implemented the JavaScript language?",
choices: ["Microsoft Corp.", " Sun Microsystems Corp.", "Netscape Communications Corp."],
correctAnswer: 2
}];
完整示例:http://jsfiddle.net/alxers/v9t4t/
使用是否常见?
[{...}]
宣布了这样一个变量?
答案 0 :(得分:1)
该定义是一个包含对象文字的数组。它不是一个嵌套数组。
{
question: "Which company first implemented the JavaScript language?",
choices: ["Microsoft Corp.", " Sun Microsystems Corp.", "Netscape Communications Corp."],
correctAnswer: 2
}
是一个对象文字,您的数组包含该文字。在您链接到的小提琴中,allQuestions
数组中定义了其中的几个。通过这样做,可以轻松地循环遍历问题数组并依次显示每个问题。
答案 1 :(得分:1)
在那里发生的事情是在数组中列出对象,例如:
[{id:1, value:"any"}, {id:2, value:"any any"}]
所以这里我们已经声明了包含两个对象的数组。另一个所谓的传统"方法是:
var arr = [];
var obj1 = {id:1, value:"any"};
arr.push(obj1);
...
答案 2 :(得分:1)
allQuestions
变量应该是"一系列问题",其中每个问题都是具有question
,choices
或{{1}等属性的对象}}
如果它被声明为correctAnswer
,它将只是一个对象。想要了解问题数量var allQuestions = {question: ..., choice: ...}
或访问权限的其他代码,例如第一个问题的测试allQuestions.length
不起作用。
尝试添加更多问题,您会看到额外括号的用途:
allQuestions[0].question
答案 3 :(得分:0)
allQuestions
只是一个对象数组,是的,这是常见的做法。