2016-03-05 78 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

在我看来,你需要一个字典(关联数组),其中的键代表团队在列表中的顺序。按键对数组进行排序,然后打印值。它甚至可以是多维的,其中关键是期望的排名位置,并且该值包含团队名称和点数。