javascript - Last.fm 使用 JQuery 进行 JSON 排序

标签 javascript jquery sorting last.fm

我正在执行 AJAX 调用以从 last.fm API 获取数据,并决定使用 JSON 作为返回数据类型。到目前为止,一切都很好。问题是这样的:我想使用 API 中的 tag.getTopTags 方法获取热门轨道,它返回一个未按受欢迎程度排序的 JSON(尽管 they say it is )。

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

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

这是我的代码中请求热门轨道的方法(通过 GET 使用我的网络服务器上的 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
      });
  };

我知道如何显示数据和其他内容,我只想在显示数据之前对数据进行排序。有人知道如何以简单的方式做到这一点吗?

最佳答案

您将希望使用数组的内置排序方法并传入比较器函数。在您的情况下:

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

该代码非常不言自明,但其工作方式是使用 Array 原型(prototype)提供的常规排序函数,并通过提供的比较函数比较数组中的元素。因此,当它进行比较检查时(例如 count1 > 比 count2?),在这种情况下它会获取一个对象,并且您将指定一个标签的计数与另一个标签的计数之间的差异应优先考虑哪个“排名”更高相比之下。

关于javascript - Last.fm 使用 JQuery 进行 JSON 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850124/

相关文章:

c# - 如何使用原始包集合到区域 MVC5

python - 如何对 pandas 数据框中的字母数字列进行排序

javascript - Fetch 不会返回任何结果

javascript - 如何使用带有 sequelize.js 的 hasOne 引用两个表

javascript - Jquery延迟功能不起作用

javascript - 在页面加载时激活在线幻灯片放映

javascript - 如何从下拉 react /redux更新产品列表

javascript - 使用 Angular 2 自定义库

java - 有效地将任何字符串映射到表示字符串字典顺序的唯一数字

arrays - 获取相对于值 Matlab 排序的数组