2016-03-05 117 views
1

所以我有一個關於這個我在html中創建的分數表的問題。提取索引數組中的int值?

var puntenTelling= new Array(3,4,2,1,5); 
var teamNamen = new Array(puntenTelling[0]+"Team1", puntenTelling[1]+"Team2",puntenTelling[2]+ "Team3", puntenTelling[3]+"Team4", puntenTelling[4]+"Team5"); 
puntenTelling.sort(function(a, b){return b-a}); 
teamNamen.sort(); 
teamNamen.reverse(); 

for (var i=0; i<5; i++) { 
    document.write("<tr><td>" + teamNamen[i]); 
    document.write("<td>" + puntenTelling[i] + "</td></tr>"); 
} 

基本上,這給了我一個排序表,它是按點排序的,並按照鏈接到點的隊名排序。 我必須在teamNames的數組中包含points(puntenTelling),否則我無法以相同的方式對它進行排序,因爲我可以對點進行排序。

現在我打印出來是這樣的:

Teamname Points 
5Team5  5 
4Team2  4 
3Team1  3 
2Team3  2 
1Team4  1 

我只是想在「Team5,的Team2」等之前擺脫了「5,4,3,2,1」

我該怎麼做?

回答

2

連接點和團隊名稱的方法並不十分乾淨和健壯(團隊名稱1860 Munich?怎麼樣?)更好的辦法是創建一個包含團隊名稱和點的對象數組,並使用此數組:

var teamsWithPoints = [ 
 
    { name: "team1", points: 3 }, 
 
    { name: "team2", points: 4 }, 
 
    { name: "team3", points: 2 }, 
 
    { name: "team4", points: 1 } 
 
    ]; 
 

 
teamsWithPoints.sort(function(a, b) { return b.points - a.points }); 
 

 
document.write("<table>"); 
 
teamsWithPoints.forEach(function(team) { 
 
    document.write("<tr>"); 
 
    document.write("<td>" + team.name); 
 
    document.write("<td>" + team.points); 
 
});

0

當你創建數組時,你正在創建這樣的對象。

var teamNamen = new Array(puntenTelling[0]+"Team1", puntenTelling[1]+"Team2",puntenTelling[2]+ "Team3", puntenTelling[3]+"Team4", puntenTelling[4]+"Team5"); 

如果你不希望價值被包含在字符串值,你聲明teamNamen像這樣。

var teamNamen = new Array("Team1", "Team2","Team3","Team4","Team5"); 

但是,這會使您的原始排序無法正常工作。所以你可以嘗試下面的代碼來保持正確的排序功能,同時打印正確的值。

for (var i=0; i<5; i++) { 
    document.write("<tr><td>" + teamNamen[i].substring(1)); 
    document.write("<td>" + puntenTelling[i] + "</td></tr>"); 
} 
+0

我知道,但我不得不否則我TeamNames不會被排序的方式點。它們是相互關聯的。 – aze45sq6d

+0

Omg謝謝。順便說一句,這是這樣的:teamName [i] .substring(1) – aze45sq6d

+0

哦,woops,混合起來。沒問題! –

0

在我看來,你需要一個字典(關聯數組),其中的鍵代表團隊在列表中的順序。按鍵對數組進行排序,然後打印值。它甚至可以是多維的,其中關鍵是期望的排名位置,並且該值包含團隊名稱和點數。