J'ai donc une question sur ce tableau de score que j'ai fait en 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>");
}

Fondamentalement, cela me donne un tableau trié, qui est trié sur les points et trié sur les noms d'équipe liés aux points. Je dois inclure les points (puntenTelling) dans le tableau des teamNames car sinon je ne peux pas les trier de la même manière que je peux trier les points.

Maintenant, je l'imprime comme ceci:

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

Je voudrais juste me débarrasser des "5,4,3,2,1" avant les "Team5, Team2" etc.

Comment puis-je faire ceci?

1
aze45sq6d 5 mars 2016 à 19:03

3 réponses

Meilleure réponse

Votre approche de concaténation des points et des noms d'équipe n'est pas très propre et robuste (que diriez-vous d'une équipe nommée 1860 Munich?) Il serait beaucoup mieux de créer un tableau d'objets qui contiennent à la fois le nom de l'équipe et ses points, et de travailler avec cela tableau:

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);  
});
2
georg 5 mars 2016 à 16:14

Il me semble que vous avez besoin d'un dictionnaire (tableau associatif) où les clés représentent l'ordre de l'équipe dans la liste. Triez le tableau par les clés, puis imprimez simplement les valeurs. Il pourrait même être multidimensionnel où la clé est la position de classement souhaitée et la valeur contient le nom de l'équipe et les points.

0
Shades 5 mars 2016 à 16:11

Lorsque vous créez le tableau, vous créez des objets comme celui-ci.

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

Si vous ne voulez pas que la valeur soit incluse dans la valeur de la chaîne, vous déclareriez teamNamen ainsi.

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

Cependant, cela fera que votre tri d'origine ne fonctionnera pas correctement. Vous pouvez donc essayer ce code suivant pour conserver la fonctionnalité de tri appropriée, tout en imprimant la valeur correcte.

for (var i=0; i<5; i++) {
  document.write("<tr><td>" + teamNamen[i].substring(1));
  document.write("<td>" + puntenTelling[i] + "</td></tr>");
}
0
Patrick Bell 5 mars 2016 à 16:12