0

我正在执行 AJAX 调用以从 last.fm API 获取数据,并决定使用 JSON 作为返回数据类型。到现在为止还挺好。问题是这样的:我想使用tag.getTopTagsAPI 中的方法获取热门曲目,它返回给我的 JSON 不是按受欢迎程度排序的(即使他们说它是)。

那么count,一旦我在代码中的变量中有这个 JSON,如何按属性(表示受欢迎程度)对这个 JSON 进行排序?

这是 JSON 的示例(请原谅缺少格式,这是来自他们在其网站上提供的链接)。它是这样的: toptags 有一个标签,其中包含一个标签数组,这些标签有名称、计数等......

这是我的代码中请求顶级曲目的方法(通过 GET 与我的 Web 服务器上的 PHP 文件 - 这工作正常):

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

我知道如何显示数据和东西,我只想在显示之前对数据进行排序。任何人都知道如何以简单的方式做到这一点?

4

1 回答 1

2

您将要使用 Array 的内置排序方法和传入的比较器函数。在您的情况下:

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

代码非常不言自明,但它的工作方式是使用 Array 原型提供的常规排序函数,并通过提供的比较函数比较数组中的元素。因此,当它进行比较检查时(比如 count1 > 比 count2相比下。

于 2012-10-11T23:34:23.937 回答