是否有另一種(更漂亮)的方式來初始化這個Javascript數組?初始化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數組?初始化javascript數組
var counter = [];
counter["A"] = 0;
counter["B"] = 0;
counter["C"] = 0;
counter["D"] = 0;
counter["E"] = 0;
counter["F"] = 0;
counter["G"] = 0;
答:這不起作用,或者至少不是您希望的方式。當你最可能尋找的是一個散列時,你初始化了一個數組。除非將第一行更改爲counter = {};
,否則counter
仍將返回[]
並且長度爲0
。這些屬性將存在,但這是[]
用於存儲鍵值對的混淆。
B:
var counter = {A: 0, B: 0, C: 0, D: 0, E: 0, F: 0, G: 0};
使用對象文本而不是數組,像這樣:
var counter = {A:0,B:0,C:0}; // and so on
然後用點表示法訪問屬性:
counter.A; // 0
...或方括號記號:
counter['A']; // 0
您將主要使用數組來處理數字屬性,儘管可以像您一樣添加非數字屬性。
+1對象文字..我不知道那些;很酷 –
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
};
-1,因爲上述只是一切是錯誤的。它確實「有效」,屬性被分配。通過「計數器仍然會返回0」,大概你的意思是'counter.toString()',但是這將返回一個空字符串(根據EMCA-262§15.4.4.2,因爲*計數器*沒有數字屬性)。如果* counter *被初始化爲一個對象,那麼'counter.toString()'不會返回「0」,它會根據ECMA-262§15.2.4.2返回'[object Object]'。 – RobG
實際上它是dumber:在控制檯運行他的代碼給了我'0',因爲最後一行是'counter [「G」] = 0;'。無論如何,我指的是控制檯輸出。當然,你可以將幾乎任何東西當作一個屬性分配給某個對象,所以我重新編寫了這一部分,指出了將'[]'作爲關聯數組使用'{}'的可取性,如果沒有其他的理由比最少的驚喜。 – brymck