2013-03-13 51 views
1

我是一個有JSON的新手。我正在使用last.fm的JSON提要構建一個事件頁面。last.fm JSON數據/如何截斷這個長數組?

飼料工作正常,但問題是多個藝術家遇到相同的事件,如音樂節。現在,整個數組在逗號後面打印出空格,而且如果列出多個樂隊,我無法弄清楚如何縮短數組。 (列出的第一個十階,例如。)

我的代碼的相關部分是

$.getJSON(last_fm_url, function(data) { 
    $.each(data.events.event, function(i, item){ 
    var eventTitle = item.title; 
    var eventArtist = item.artists.artist; 
    }); 
}); 

EVENTTITLE也沒什麼大不了的,因爲這裏只有一個,但我不知道該怎麼用eventArtist做,如何將這個長列表分成我可以使用的單個項目。

我的樣品在這裏:http://bit.ly/ZI4Q5h。我的jsfiddle在這裏:http://jsfiddle.net/SBvUm/2/

謝謝你的幫助。

+0

你可以做一個自包含的例子嗎? – Blender 2013-03-13 03:24:33

+2

或發佈JSON你回 – 2013-03-13 03:24:50

+0

對不起 - 我已經多次閱讀這個網站,但從未公佈過。什麼是一個獨立的例子? – 2013-03-13 03:28:44

回答

0

如果你想在10個的陣列的第一項,你應該使用切片

eventArtist = item.artists.artist.slice(0, 9); 

我更新了的jsfiddle:http://jsfiddle.net/SBvUm/3/

在爲了控制「的toString」數組表示更好,你可以使用「加入」。

例如:讓每個逗號後的空間,你的最終代碼看起來應該是這樣

eventArtist = item.artists.artist.slice(0, 9).join(", "); 

你的問題是,有時item.artists.artist不是一個數組而是一個字符串。在這種情況下,切片和連接將無法正常工作。

你的代碼看起來應該是這樣

更新小提琴:http://jsfiddle.net/SBvUm/7/

var eventArtist = item.artists.artist; 
if (typeof(eventArtist["join"]) == "function" ){ 
     eventArtist = eventArtist.slice(0,9).join(", "); 
} 
+0

感謝@guymograbi,它很好地回答了我的一半問題。但是如何在列表中的每個逗號之後加空格? – 2013-03-13 19:40:36

+0

好吧,不知道這是否是最優雅的解決方案,但我解決了它:http://jsfiddle.net/SBvUm/4/。謝謝大家。 – 2013-03-14 05:03:28

+0

只需在註釋中回答你的問題 - 要控制數組toString表示的分隔符,你應該使用「join」。爲了得到一個空格後的逗號,它會看起來像這樣'item.artists.artist.slice(0,9).join(「,」);' – 2013-03-14 07:50:15