Сортировка JSON Last.fm с помощью JQuery

Я делаю вызовы AJAX для получения данных из API last.fm и решил использовать JSON в качестве возвращаемого типа данных. Все идет нормально. Проблема в следующем: я хочу получить топовые треки с помощью метода tag.getTopTags из API, а он возвращает мне JSON, не отсортированный по популярности (хотя говорят, что это).

Итак, как мне отсортировать этот JSON по свойству count (указывающему на популярность), если оно есть в переменной в моем коде?

Вот пример 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
      });
  };

Я знаю, как показать данные и прочее, я просто хотел бы отсортировать данные, прежде чем показывать их. Кто-нибудь знает, как это сделать простым способом?


person swiftcode    schedule 11.10.2012    source источник


Ответы (1)


Вы захотите использовать встроенный метод сортировки Array с переданной функцией сравнения. В вашем случае:

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

Код не требует пояснений, но он работает, используя обычную функцию сортировки, предоставленную прототипом Array, и сравнивая элементы в массиве с помощью предоставленной функции сравнения. Итак, когда он выполняет проверки сравнения (например, count1 >, чем count2?), в этом случае он вместо этого получит объект, и вы укажете, что разница между счетчиком одного тега и другим должна отдавать приоритет тому, какой «ранг» выше в сравнении.

person Vinay    schedule 11.10.2012