初始化javascript数组

初始化javascript数组,javascript,arrays,Javascript,Arrays,有没有其他(更漂亮的)方法来初始化这个Javascript数组 var counter = []; counter["A"] = 0; counter["B"] = 0; counter["C"] = 0; counter["D"] = 0; counter["E"] = 0; counter["F"] = 0; counter["G"] = 0; 那不行,或者至少不是你希望的那样。当您最可能查找的是散列时,您初始化了一个数组计

有没有其他(更漂亮的)方法来初始化这个Javascript数组

    var counter = [];
    counter["A"] = 0; 
    counter["B"] = 0;
    counter["C"] = 0;
    counter["D"] = 0;
    counter["E"] = 0;
    counter["F"] = 0;
    counter["G"] = 0;

那不行,或者至少不是你希望的那样。当您最可能查找的是散列时,您初始化了一个数组<代码>计数器仍将返回
[]
且长度为
0
,除非将第一行更改为
计数器={}。属性将存在,但使用
[]
来存储键值对令人困惑

B:


使用对象文字而不是数组,如下所示:

var counter = {A:0,B:0,C:0}; // and so on
然后使用点符号访问属性:

counter.A;  // 0
counter['A'];  // 0
…或方括号表示法:

counter.A;  // 0
counter['A'];  // 0

您将主要使用数组来表示数值属性,尽管可以像以前那样添加非数值属性。

使用对象更有意义:

var counter={A:0,B:0,C:0,D:0,E:0,F:0,G:0};
    var counter = {
        A: 0, 
        B: 0, 
        C: 0, 
        D: 0, 
        E: 0, 
        F: 0, 
        G: 0
     };

如果你真的想要一个满是零的数组,
array(5).fill(0)
就可以了。

+1表示对象文字。。我不知道这些;非常酷,因为上面所说的一切都是错误的。它执行“工作”,属性被指定。“计数器仍将返回0”大概是指
计数器.toString()
,但这将返回一个空字符串(根据EMCA-262§15.4.4.2,因为计数器没有数字属性)。如果计数器初始化为对象,则
counter.toString()
将不会返回“0”,它将根据ECMA-262§15.2.4.2返回
[object object]
。事实上,它更愚蠢:在控制台中运行他的代码给了我
0
,因为最后一行是
counter[“G”]=0。无论如何,我指的是控制台输出。当然,您可以将几乎任何内容作为属性指定给对象,这是对的,因此我重新编写了这一部分,以指出在
[]
上使用
{}
作为关联数组的可取性,如果没有其他原因的话。