2012-10-11 48 views
0

選我做AJAX調用從last.fm API獲取數據,並決定使用JSON作爲返回的數據類型。到現在爲止還挺好。問題是這樣的:我想用來自API的tag.getTopTags方法讓高層軌道並返回我,是不是按人氣排序的JSON(即使they say it is)。Last.fm JSON使用jQuery

那麼,如何通過count屬性進行排序這個JSON(指示普及),一旦我有這個在我的代碼的變量?

這裏是JSON的sample(原諒缺乏的格式,這是他們給在其網站上的鏈接)。它是這樣的:toptags有標籤,其中包含一系列標籤,其中包含名稱,計數等...

以下是從我的代碼中請求頂級曲目的方法(通過GET獲取我的PHP文件Web服務器 - 這是工作的罰款):

var getTopTracks = function() { 
    $.getJSON(
     settings.PHP_REQUEST_URL, 
     { 
     method: "tag.getTopTags", 
     api_key: settings.LASTFM_APIKEY, 
     format: "json", 
     callback: "?" 
     }, 
     function(data) { 
     // treat data here 
     }); 
    }; 

我知道如何顯示數據和東西,我只是想在數據之前我給它進行排序。任何人都知道如何以簡單的方式做到這一點?

回答

2

你會想使用陣列內置的排序方法在傳遞一個比較函數在您的情況:

data.toptags.tag.sort(function (t1, t2) { 
    return t1.count - t2.count; 
}); 

的代碼是不言自明的,但它的工作方式是通過使用Array原型提供的常規排序功能,並通過提供的比較功能比較數組內的元素。所以,當它進行比較檢查時(比如count1> count2?),它會在這種情況下獲得一個對象,並且您將指定一個標記計數和另一個標記計數之間的差異應該優先於哪個「等級」更高相比下。

+0

非常感謝,這個完美的作品! – swiftcode