2013-09-30 147 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

就是這樣,謝謝! –

相關問題