2013-08-30 35 views
0

有很多這樣的問題,但...呃......我無法讓它工作。我如何...採取像這樣的對象文字:JavaScript對象數組文字的可靠長度?

locations = {}; 

locations.activities = [ 
{ text:'biking'}, 
{ text:'hiking'}, 
{ text:'boating'}, 
{ text:'studying'}, 
{ text:'reading'}, 
]; 

並打印出活動數組值?

IE和Firefox的長度不同(分別爲6和5)。

感謝

+0

你是如何打印出來? –

+0

您能解釋一下「打印出來」的意思嗎 –

+2

由於最後一項後的逗號結尾,IE和Firefox會得到不同的值。 Firefox忽略空值,而IE似乎關心它。使用'console.log'應該給你一些指示。否則,使用for循環並記錄或將每個值放在頁面上。 – lemieuxster

回答

4

的問題是後面的逗號:刪除跨瀏覽器兼容的原因。因爲某些瀏覽器解析該文字錯誤當尾隨逗號是本

的不一致的行爲的原因。正確的行爲是ignore the trailing comma

如果一個元件在陣列的端消隱(即[...,]),即元素不向陣列的長度。


語法工作正確在IE10但正確在IE9和之前。這可以通過在相關瀏覽器模式下從控制檯測試[1,].length來驗證。報告的值分別爲1(正確)和2(不正確)。

尾隨逗號在[,]的情況下是相關的,它應該相當於[undefined]

+0

哦,非常感謝你!我的理智感謝你。補充那些尾隨的逗號。我永遠不會再使用它們(我是這樣的強迫症)。總有一個原因......很高興知道它是什麼。 – TGanoe

1

使用JSON.stringify(locations.activities);

+0

是的,我認爲你是對的,JSON是要走的路。這將節省我必須做的所有循環。感謝您的想法! – TGanoe

1

試試這個

locations = {}; 
locations.activities = [ 
{ text:'biking'}, 
{ text:'hiking'}, 
{ text:'boating'}, 
{ text:'studying'}, 
{ text:'reading'}, 
]; 


$.each(locations.activities, function(){ 
    alert(this.text); 
}); 

爵士小提琴這裏http://jsfiddle.net/mhnHx/

+0

感謝Raghu,我唯一對使用JavaScript對象的唯一猶豫是訂單不能保證?如果我最終添加一個序列屬性,那麼我會使用每個屬性。 – TGanoe