初始化javascript数组
有没有其他(更漂亮的)方法来初始化这个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; 那不行,或者至少不是你希望的那样。当您最可能查找的是散列时,您初始化了一个数组计
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代码>。无论如何,我指的是控制台输出。当然,您可以将几乎任何内容作为属性指定给对象,这是对的,因此我重新编写了这一部分,以指出在[]
上使用{}
作为关联数组的可取性,如果没有其他原因的话。