2017-03-02 74 views
0

以下代碼:輸出陣列而不數字索引

for(i=0; i<3; i++){ 
     a = {}; 
     a['name' + i] = i; 
     data.push(a); 
} 

...輸出以下的數組:

{ 
1:{name0:0}, 
2:{name1:1}, 
3:{name2:2} 
} 

如何可以修改代碼,使得其輸出陣列如下:

{ 
name0:0, 
name1:1, 
name2:2 
} 

我需要這樣做的原因是我希望能夠像以後一樣引用我的數組:data[name1],而不是遍歷整個數組來查找我需要的值。

+1

使用普通對象而不是數組'data = {}',然後在循環中使用'data ['name'+ i] = i'。你不需要'a'。 – nnnnnn

+1

他們不需要推動; –

回答

3

以及你應該直接使用數據作爲對象,而不是將其作爲陣列(和因而具有作爲對象的數組)

for(i=0; i<3; i++){ 
    data['name' + i] = i; 
} 

請記住,數據應的對象(初始化as var data = {}

+0

這是正確的答案。我的錯誤是試圖每次將值推入數組。我會接受這個答案是正確的。 – Noobster

+1

你需要初始化'data' ... var data = {};'? OP沒有顯示'data'是如何初始化的,而是來自'var data = [];'的操作。 – PeterKA