0

last.fm API からデータを取得するために AJAX 呼び出しを行っており、JSON を戻りデータ型として使用することにしました。ここまでは順調ですね。問題は次のとおりです。API のメソッドを使用してトップ トラックを取得したいのですがtag.getTopTags、人気順でソートされていない JSON が返されます (人気順であると言われていますが)。

countでは、この JSONをコードの変数に入れたら、プロパティ (人気を示す) でこの JSON を並べ替えるにはどうすればよいでしょうか?

JSONのサンプルを次に示します (書式設定がないことをご容赦ください。これは、Web サイトで提供されているリンクからのものです)。次のようになります: toptags には、名前、カウントなどを持つタグの配列を含むタグがあります...

トップトラックをリクエストする私のコードからのメソッドは次のとおりです(私のWebサーバーにあるPHPファイルを使用してGETを介して-これは正常に機能しています):

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 の組み込み sort メソッドを使用したいと思うでしょう。あなたの場合:

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

コードは一目瞭然ですが、それが機能する方法は、Array プロトタイプによって提供される通常の並べ替え関数を使用し、提供された比較関数によって配列内の要素を比較することです。したがって、比較チェックを行う場合 (count1 > count2 のように)、この場合は代わりにオブジェクトを取得し、一方のタグのカウントと他方のタグのカウントの差がどちらの「ランク」が高いかを優先するように指定します。比較において。

于 2012-10-11T23:34:23.937 に答える