在索引数组中提取int值?

时间:2016-03-05 16:03:18

标签: javascript arrays sorting

所以我对我用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”等之前。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

你连接点和团队名称的方法不是很干净和健壮(一个名为1860 Munich的团队怎么样?)更好的做法是包含团队名称及其点数的对象数组,以及使用这个数组:

&#13;
&#13;
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;
&#13;
&#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)

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