所以我对我用html制作的这个得分表有疑问。
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的数组中包含点(puntenTelling),否则我无法按照我对点进行排序的方式对其进行排序。
现在我将它打印出来:
Teamname Points
5Team5 5
4Team2 4
3Team1 3
2Team3 2
1Team4 1
我只想摆脱“5,4,3,2,1” 在“Team5,Team2”等之前。
我该怎么做?
答案 0 :(得分: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);
});
&#13;
答案 1 :(得分: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>");
}
答案 2 :(得分:0)
在我看来,你需要一个字典(关联数组),其中的键代表了团队在列表中的顺序。按键对数组排序,然后只打印值。它甚至可以是多维的,其中键是所需的排名位置,值包含团队名称和点数。