2012-10-11 49 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