2015-02-08 122 views
0

我最近已经进入了JavaScript(大约四天前),并且我遇到了麻烦,有点适应语法。我正在创建一个日历,我试图在我的“主”对象 - 日历中声明一个对象数组(每月一个)。我已经做了大量的搜索和浏览W3School的所有内容,似乎无法弄清楚。所以,如果我有声明另一个对象内的对象阵列

var calender = { 
: 
:...functions{}, 
months: [], 

我将如何去获得的months内的对象和宣布他们的属性(即months[0]将有“一”的名称和它的天数等)?我处于概念上的瘫痪状态。我是否通过索引来完成这个索引,或者我可以在数组创建时直接声明这些对象吗?从我到目前为止所掌握的情况来看,通常我可以只说一些类似var arr = {varName: "name",...(and so on)}的东西,但它似乎在括号内是不允许的,而且我不能确定从哪里访问索引的语法。或者,也许我只是在做这个完全的低音赞助。任何指导将不胜感激。谢谢

回答

2

单程;阵列中的对象文本:

var calendar = { 

    months: [ 
     { 
      name : "Jan", 
      days : 31 
     }, 
     { 
      name : "Feb", 
      days : "28ish" 
     } 
    ] 
}; 

alert(calendar.months[0].days); 
+0

这正是我正试图做!谢谢。所以基本上这些指数在某种意义上作为'var'的名字?或者以这种方式观看它会不好? – 2015-02-08 19:21:58

+0

最好将它们视为键/值对。 'calendar'有一个键'month',它有一个数组作为它的值。反过来,该数组有两个对象,每个对象都具有'name'和'days'值。 – Andy 2015-02-08 19:30:23

+0

(IMO)你应该将一个Array(个月)视为一个*单个实体*(一个变量,或者在一个对象属性的上面的例子中),它是一个包含存储和访问的值的列表数字索引 – 2015-02-08 19:31:01

0

让我们回到基础,这是你可以写文字对象,数组和包括含有包含数组对象数组对象:

var my_object = {key1: "value1", key2: "value2"}; 
console.log(my_object.key1); 

var my_array = ["value1", "value2"]; 
console.log(my_array[0]); 

var my_compound = {a: [{b: "c", d: [0, 1, 2]}, 
         {b: "e", d: [3, 4, 5]}]}; 
console.log(my_compound.a[1].d[0]); // => 3 
console.log(my_compound["a"][1]["d"][0]); // same thing, perhaps more readable?