按单个值对对象数组进行排序

时间:2012-11-12 00:19:53

标签: javascript arrays sorting

我试图找出如何按该数组中的对象对数组进行排序。在这个例子中,我希望能够按玩家名称或玩家得分对数组进行排序。

var topPlayers = new Array();

$(".player").each( function(i) {
    topPlayers[i] = {};
    topPlayers[i]["name"] = $(this).children(".name").text();
    topPlayers[i]["score"] = $(this).children(".score").text();
});


topPlayers.sort(function(a.name,b.name){return a.name-b.name}); //This is the line of code I can't figure...

2 个答案:

答案 0 :(得分:1)

按名称排序:

topPlayers.sort(function(a, b)
{ 
  if ( a.name > b.name ) return 1;
  else if ( a.name < b.name ) return -1;
  else return 0;
}); 

按分数排序:

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

答案 1 :(得分:0)

sort方法采用一个进行比较的函数,并根据结果返回一个数字:

topPlayers.sort(function(a,b){
  if (a.name < b.name) return -1;
  if (a.name > b.name) return 1;
  return 0;
});

对于数值,您只需减去它们即可获得正确的返回值:

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