2013-09-30 101 views
1

我有一个人物对象数组,每个对象都有一个名称和一个分数属性。我想通过person对象的score属性对数组进行排序,然后显示数组。按属性排序的对象的Javascript数组不工作

我有一个函数来显示排名,我已经将排序代码添加到该函数的顶部,但它没有对数组进行排序,也没有发生错误。任何想法有什么不对?

的JavaScript代码:

var rankings = []; 

/* Player object constructor */ 

function Player(pname, score) { 
     this.pname = pname; 
     this.score = score; 
    } 

/* function to add new players removed for clarity, it works */ 


/* sort and display the player objects by score */ 

function displayRankings() { 

     rankings.sort(function(a, b) { 
      return a[1] - b[1]; 
     }); 

     for (var i = 0; i < rankings.length; i++) { 
      var li = document.createElement("li"); 
      var node = document.createTextNode(rankings[i].pname + ", " + rankings[i].score); 
      li.appendChild(node); 

      var element = document.getElementById("rankings"); 
      element.appendChild(li); 
     } 
    } 
+1

您应该为您的“排名”提供最少的数据,否则我们无法确定它是否是数据问题。 (我想你的排序功能是错误的,请改为使用'a.score - b.score') – Zeta

+0

不确定要提供哪些数据,因为实际上没有太多的HTML和函数代码将玩家添加到阵列。改成a.score - b.score诀窍。非常感谢 –

回答

1

假设rankingsPerson对象的数组,则需要被访问score属性,而不是[1]

rankings.sort(function(a, b) { 
    return a.score - b.score; 
}); 
+0

就是这样,谢谢! –

相关问题