获取JSON数组中的前5个得分值

时间:2016-05-03 00:45:26

标签: javascript jquery json ajax loops

所以我试图在这个JSON对象中获得得分的前五个值。

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

现在我得到了所有的价值。

数组中的对象具有score属性。我试图获得分数值最高的前5个对象,然后将它们排列在有序列表中。

提前感谢您的帮助!

$.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);
      })
    }
  });

3 个答案:

答案 0 :(得分:1)

好的,所以你想要使用以下方法将你的JSON转换为一个对象数组:

var arr = JSON.parse(data);

之后,您可以使用以下排序功能进行排序,该功能将从最低到最高排序。

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

如果要从最高到最低排序,可以在排序功能中交换a和b。 E.g:

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

然后,如果你愿意,你可以转换回JSON:

JSON.stringify(arr);

答案 1 :(得分:0)

这是基于JavaScript中的Array.sort(),它使用比较函数对数据进行排序(但比较函数使用unicode值,这就是我使用 parseInt()的原因)

    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()来获得前n个元素

答案 2 :(得分: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>