2013-02-20 111 views
0

我想吐出全部來自一個JSON塊的用戶場景,但我失去了一些東西......循環相同的密鑰JSON節點

你想看看?

我把它放在這裏也: http://jsfiddle.net/RBergante/2HwEH/

這是我有:

function scenes(){ 
    var allscenes = new Array(); 
    for (var i in data.users){ 
     allscenes = data.users[i].scenes.scene; 
     document.write(allscenes[i] + "</br>"); 
    } 
} 

var data={"users":[ 
    { 
     "firstName":"Rick", 
     "lastName":"Villalobos", 
     "pic":"http://ia.media-imdb.com/images/M/[email protected]@._V1._SY209_CR1,0,140,209_.jpg", 
     "scenes": { 
      "scene": "In the Woods", 
      "scene": "City lights", 
      "scene": "Marnon Willis"       
     }, 
     "joined": { 
      "month":"January", 
      "day":12, 
      "year":2012 
     } 
    }, 
    { 
     "firstName":"John", 
     "lastName":"Jones", 
     "pic":"http://ia.media-imdb.com/images/M/[email protected]@._V1._SY209_CR0,0,140,209_.jpg", 
     "joined": { 
      "month":"April", 
      "day":28, 
      "year":2010 
     } 
    } 
]} 

scenes(); 

謝謝!

+0

「約翰」沒有任何場景; Uncaught TypeError:無法讀取未定義的屬性「場景」 – Stefan 2013-02-20 11:51:14

回答

1

因爲一個對象不能有同一個鍵的多個屬性。場景應該是一個數組:

"scenes": ["In the Woods", "City lights", "Marnon Willis"] 

http://jsfiddle.net/2HwEH/1/

  • 此外,通過數組循環時,不要使用for-in,因爲它也將運行在陣列性能,而不僅僅是索引的內容。改爲使用forwhile

  • 此外,你不應該使用document.write(),特別是在頁面加載完成後(例如稍後在函數中調用)。

+0

可愛,非常感謝! – 2013-02-20 12:03:56

+0

爲什麼使用連接雖然? – 2013-02-20 12:13:13

+0

@RogerBergante我只是做了一個快速連接來獲取值並加入到單個字符串中。如果你想單獨獲取它們,你可以循環瀏覽它們。 – Joseph 2013-02-20 12:17:48