所以我试图在这个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);
})
}
});
答案 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>