Javascript 静态数组声明和初始化

Javascript 静态数组声明和初始化,javascript,Javascript,我正在从头开始学习JS,并使用JS实现HighCharts代码。看到其中一个演示,我看到一个变量数据数组声明,如下所示: data = [{ y: 55.11, color: colors[0], drilldown: { name: 'MSIE versions', categories: ['MSIE 8.0', 'MSIE 6.0', 'MSIE 7.0', 'MSIE 9.0'],

我正在从头开始学习JS,并使用JS实现HighCharts代码。看到其中一个演示,我看到一个变量数据数组声明,如下所示:

        data = [{
        y: 55.11,
        color: colors[0],
        drilldown: {
           name: 'MSIE versions',
           categories: ['MSIE 8.0', 'MSIE 6.0', 'MSIE 7.0', 'MSIE 9.0'],
           data: [{
               y: 33.06,
               drilldown: {
                   name: 'drilldown next level',
                   categories: ['a', 'b', 'c'],
                   data: [23,54,47],
                   color: colors[0]
               }
           }, 10.85, 7.35, 2.41],
           color: colors[0]
        }
     }, {
         y: 21.63,
        color: colors[1],
        drilldown: {
           name: 'Firefox versions',
           categories: ['Firefox 3.6', 'Firefox 4.0', 'Firefox 3.5', 'Firefox 3.0', 'Firefox 2.0'],
           data: [13.52, 5.43, 1.58, 0.83, 0.20],
           color: colors[1]
        }
     }];

这个“数据”数组声明是什么意思?

data
是一个包含两个对象文本的数组。每个对象文字依次包含各种属性,一些简单的属性,如
y
color
,还有一些更复杂的属性,如
深入查看
,它本身就是一个具有自己属性的对象文字


在这种情况下,最好有非常清晰的格式,以便更容易地看到什么属于什么。

假设您对以
data=[{
开头的
data
数组感到困惑,而不是像
data:[23,54,47]这样的静态数组


数据
是一个包含多个对象文字的数组,每个对象文字都有一个名为
向下钻取
的属性,该属性包含另一个类似的结构,该结构可能包含另一个这样的
数据
数组

它可以分解为类似以下结构:

data --> (array)
          |--> object
          |       --> name
          |       --> category
          |       --> drilldown (object)
          |             --> data (array)
          |                 |--> object
          |                 |--> object
          |--> object
                 --> name
                 --> category
                 --> drilldown (object)
                      --> data (array)
                           |--> object
                           |--> object

它是一个包含两个元素的数组,每个元素都是一个对象。这些元素在中声明。例如,第二个元素是:

{
    y: 21.63,
    color: colors[1],
    drilldown: {
       name: 'Firefox versions',
       categories: ['Firefox 3.6', 'Firefox 4.0', 'Firefox 3.5', 'Firefox 3.0', 'Firefox 2.0'],
       data: [13.52, 5.43, 1.58, 0.83, 0.20],
       color: colors[1]
    }
 }
此对象由各种属性组成。例如,属性“y”的值为21.63。属性“深入”是另一个对象,依此类推。可以无限嵌入原语、数组和对象

此外,我可以推断数据[0]和数据[1]似乎是相似的对象,因为它们具有相同的属性

如果你很难看到这个结构,有一件事可能会有所帮助,那就是对你的代码风格,特别是缩进非常严格。我对它做了一点修改,并显示了一个非常大的间距。它占用了更多的行,但应该更清楚什么是相关的

data = [
    {
        y: 55.11,
        color: colors[0],
        drilldown: {
        name: 'MSIE versions',
            categories: ['MSIE 8.0', 'MSIE 6.0', 'MSIE 7.0', 'MSIE 9.0'],
            data: [
                {
                    y: 33.06,
                    drilldown: {
                        name: 'drilldown next level',
                        categories: ['a', 'b', 'c'],
                        data: [23,54,47],
                        color: colors[0]
                    }
                },
                10.85,
                7.35,
                2.41
            ],
            color: colors[0]
        }
    },{
        y: 21.63,
        color: colors[1],
        drilldown: {
            name: 'Firefox versions',
            categories: ['Firefox 3.6', 'Firefox 4.0', 'Firefox 3.5', 'Firefox 3.0', 'Firefox 2.0'],
            data: [13.52, 5.43, 1.58, 0.83, 0.20],
            color: colors[1]
        }
    }
];

数据是一个对象,它包含一些对象,每个大括号{}代表一个对象

var data=[{
    a:'Hello',b:'world'},
    {
        x:'Hello World',
        y:function(){ alert(this.x);}
    }];
在上面的例子中

{a:'Hello',b:'world'} // This object contains two properties/variables a and b
是一个对象,它是数据数组的第一个(索引0)元素,并且

{
    x:'Hello World' // This is a property/Variable of 2nd objec
    y:function(){ alert(this.x);}, // This is a method/function of 2nd object

}
是数据数组的第二个(索引1)元素,您可以调用

alert(data[0].a); // Will alert "hello" because first (0) item/object of data array has a variable that's value is "hello"
data[1].y(); // Will alert "Hello World" because 2nd item/object of data array has a method/function that alerts it's 'x' variable's data, 'this' indicates current object.

fiddle是。

它初始化一个对象数组。我们还能做什么?谢谢,这意味着我可以访问像数据[0]这样的成员。drilldown.color的值?是的。绝对可以!尝试在Firebug或google chrome开发工具中编写console.log(数据)。它将为您提供一个可探索的对象,向您准确显示结构。