2016-05-03 16 views
1

このJSONオブジェクトのスコアの上位5つの値を取得しようとしています。JSON配列の上位5つのスコア値を取得する

http://rest.learncode.academy/api/guessinggame/scores

今私はすべての値を取得しています。

配列内のオブジェクトにはscoreプロパティがあります。私は最高のスコア値を持つ上位5つのオブジェクトを取得しようとしているし、順序リストでそれらを吐き出す。

ありがとうございました!

var arr = JSON.parse(data); 

その後あなたは最低から最高にソートされます、次のソート機能を使用して並べ替えることができます:あなたが使用してオブジェクトの配列にあなたのJSONに変換したいと思うよう

$.ajax({ 
    type: 'GET', 
    url: 'http://rest.learncode.academy/api/guessinggame/scores', 
    success: function(data) { 
     console.log("Scores!", data); //the new item is returned with an ID 

     $.each(data, function(i, score) { 
     $('.score-list').append('<li> Name: ' + score.name + '<br/>' + 'Score: ' + score.score); 
     }) 
    } 
    }); 

答えて

1

オーケー。

arr.sort(function(a, b) { 
    return a.score - b.score; 
}); 

あなたは最高から最低までソートしたい場合は、ソート関数にaとbを入れ替えることができます。例:

これはJavaScriptでのArray.sort()に基づいています
JSON.stringify(arr); 
+0

すごいです!これは驚異的でした!コードとその機能を通して人間の説明を理解してください。 –

+0

心配はいりません!関数を使って遊んで、さまざまなバリエーションで並べ替えることができます。 たとえば、フィルタ関数を使って '!= 0'のスコアをフィルタリングすることができます:' arr.filter(function(obj){return obj.score!= 0}); '@GarrettSanderson – James111

+1

恐ろしい!私は間違いなくそれを取り乱すだろう! –

0

は、それがデータをソートする比較関数を使用しています(しかし:あなたがしたい場合

x.sort(function(a, b) { 
return b.score - a.score; 
}); 

その後、あなたはJSONに戻って変換することができます比較関数は

data.sort(function(a, b){ 
     if (parseInt(a.score) < parseInt(b.score)) { 
      return 1; 
     } 
     if (parseInt(a.score) > parseInt(b.score)) { 
      return -1; 
     } 
     return 0; 
    }) 

次にあなたがArray.sliceを(使用することができます)私はのparseInt()を使用理由です、Unicode値を使用しています)は、使用する最初のn個の要素

0

を取得する:

data = data.sort(function(a, b) { 
    return parseInt(b.score, 10) - parseInt(a.score, 10); 
}); 

あなたは、配列内の指定されたスコア値を持つデータを並べ替えることができます。 <ol>タグを使用して、順序付きリストをレンダリングすることができます。このような

何か:

$(function() { 
 
    $.ajax({ 
 
    type: 'GET', 
 
    url: 'http://rest.learncode.academy/api/guessinggame/scores', 
 
    success: function(data) { 
 
     data = data.sort(function(a, b) { 
 
     return parseInt(b.score, 10) - parseInt(a.score, 10); 
 
     }); 
 
     $.each(data, function(i, score) { 
 
     if (i < 5) { // The top 5. 
 
      $('.score-list').append('<li> Name: ' + score.name + '<br/>' + 'Score: ' + score.score); 
 
     } 
 

 
     }) 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ol class="score-list"></ol>

関連する問題