2012-10-11 5 views
0

last.fm API에서 데이터를 가져 오기 위해 AJAX 호출을 수행하고 JSON을 반환 데이터 형식으로 사용하기로 결정했습니다. 여태까지는 그런대로 잘됐다. 문제는 이것입니다 : API에서 tag.getTopTags 메서드를 사용하여 최고의 트랙을 얻고 싶습니다. 인기순으로 정렬되지 않은 JSON을 반환합니다 (심지어 they say it is).Last.fm JQuery로 JSON 정렬

내 코드의 변수에이 JSON을 count 속성 (인기도를 나타냄)으로 정렬하려면 어떻게해야합니까?

여기에 JSON의 sample이 있습니다. (서식이 없으니 웹 사이트에서 제공 한 링크에서 가져온 것입니다.) 그것은 다음과 같습니다 : toptags에는 이름, 개수 등을 포함한 태그 배열이 들어있는 태그가 있습니다.

다음은 내 코드의 메소드 중에서 최상위 트랙을 요청하는 메소드입니다 (내 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 
     }); 
    }; 

내가 데이터와 물건을 표시하는 방법을 알고, 난 그냥 보여 전에 데이터를 정렬하고 싶습니다. 누구든지 간단한 방법으로이 작업을 수행하는 방법을 알고 있습니까?

답변

2

당신은 전달 비교기 기능을 배열의 기본 정렬 방법을 사용하려는거야 귀하의 경우 :.

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

코드 꽤 단정하지만, 그것이 작동하는 방법입니다 Array 프로토 타입에서 제공하는 일반 정렬 함수를 사용하고 제공된 비교 함수로 배열 내의 요소를 비교합니다. 따라서 비교 검사 (예 : count1>가 count2보다?) 인 경우이 경우 객체를 가져오고 한 태그의 수와 다른 수의 차이가 "우선 순위가 높은"우선 순위를 지정하도록 지정합니다 비교해 봐.

+0

정말 고마워요, 완벽하게 작동합니다! – swiftcode