2013-08-01 37 views
-1

當我做在Javascript中這樣的數組:爲什麼不會console.log顯示我的整個JavaScript多維數組?

var tabInfos = []; 
    tabInfos[1] = []; 
    tabInfos[1]['label'] = 'one'; 
    tabInfos[1]['id'] = '111'; 
    tabInfos[2] = []; 
    tabInfos[2]['label'] = 'two'; 
    tabInfos[2]['id'] = '222'; 

我怎樣才能獲得的console.log(tabInfos),以顯示第一個值以及(如1,2):

enter image description here

+3

爲什麼使用鍵值對的數組?這就是'對象'的用途。 – Doorknob

+0

使用tabInfos進行試用[1]。標籤 –

回答

4

您將第一個項目看作未定義的原因是因爲它是。 JS數組從0開始,你開始你在1

看一看獲得推薦的方式,你似乎什麼希望 - 對象的數組:

var tabInfos = [{ 
 
    "label": "zero", 
 
    "id": "000" 
 
}, { 
 
    "label": "one", 
 
    "id": "111" 
 
}, { 
 
    "label": "two", 
 
    "id": "222" 
 
}]; 
 

 
console.log(tabInfos); 
 
// or if you must 
 
console.log(JSON.stringify(tabInfos));

+1

window.console && console.log(JSON.stringify(tabInfos))很好地工作,謝謝。 –

-1

您是否擔心第一個未定義的值? JavaScript數組是0索引。如果您將第一個值設置爲1,則第0個位置會自動變爲不確定。

+0

這應該是一條評論。 – Doorknob

+0

我的歉意。我誤解了這個問題。 –

3

您應該使用對象,而不是數組作爲您的內部項目。它們不是陣列式的。

var tabInfos = []; 
tabInfos[1] = {}; 
tabInfos[1]['label'] = 'one'; 
tabInfos[1]['id'] = '111'; 
tabInfos[2] = {}; 
tabInfos[2]['label'] = 'two'; 
tabInfos[2]['id'] = '222'; 
+1

+1,但你仍然在從1 – Doorknob

+1

編制索引的錯誤你是對的。太急於迴應。但@ mplungjan的答案反正更好。 –

0

其實你的屏幕截圖控制檯DOES顯示tabInfos [1]和tabInfos的值[2]第一個值,它顯示在線減號之後[ - ]因爲有沒有任何值在右側顯示。

1

你做到這一點,如下所示:

var i = 0; 

JSON.stringify(tabInfos, null, 2).split(/\n/).forEach(function(line) { 
    window.console && console.log(
    (/\s{2}\S/.test(line)) ? i++ + line : line 
); 
}); 
0
var tabInfos = []; 
    tabInfos[1] = {}; 
    tabInfos[1].label = 'one'; 
    tabInfos[1].id = '111'; 
    tabInfos[2] = {}; 
    tabInfos[2].label = 'two'; 
    tabInfos[2].id = '222'; 

但建議tabInfos是一個對象而不是數組(建議您可以使關聯數組也可以具有命名屬性)。

相關問題