Le tri sur un tableau Array à deux dimmensions en javascript

tri_bulle.jpg Il y a parfois des trucs tous bêtes sur lesquels on lutte des heures. Le tri par ordre alphabétique d’un tableau à deux dimmensions en fait partie. Plusieurs tutoriels traitaient de ça, mais j’ai mis du temps à trouver celui qui a permis à mon cerveau de faire tilt. C’est celui là: Javascript sorting

Tentative de traduction et surtout d’adaptation façon Gnieark:

La méthode javascript sort() permet de trier un array simple, mais peut prendre une function en paramètre de tri (elle sera nommée sortByTexte dans l’exemple en dessous).

Mon tableau se présente de cette manière:

  1. monArray=[
  2. {id: 215, texte: "Banana split"},
  3. {id: 245, texte: "Camembert"},
  4. {id: 285, texte: "Bière en pression"}
  5. etc...
  6. ];

L’id n’a aucun ordre logique, c’est juste un autoincrement de la base de données. Lorsque je construisais mon tableau de la façon Plats[id]=texte le soucis c’est que du coup le javascript me le classait par identifiant numérique, ce qui n’a aucun sens dans mon cas, et si je le triais avec un monArray.sort(); je perdais les identifiants (qui me servent pour la suite du code).

Reprenons le tableau ci dessus.

Pour le trier, Voici le code:

  1. function sortByTexte( a, b )
  2. {
  3. var x = a.texte.toLowerCase(); //changez "texte" par le nom de votre champs
  4. var y = b.texte.toLowerCase(); //idem
  5. return ((x < y) ? -1 : ((x > y) ? 1 : 0));
  6. }
  7. //mon array, mais là c'est juste pour l'exemple
  8. monArray=[
  9. {id: 215, texte: "Banana split"},
  10. {id: 245, texte: "Camembert"},
  11. {id: 285, texte: "Bière en pression"}
  12. etc...
  13. ];
  14. //le trier
  15. monArray.sort(sortByTexte);

Voila.

[l’image provient de http://axiomcafe.fr/tri-dans-un-tableau ]

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

La discussion continue ailleurs

URL de rétrolien : https://blog-du-grouik.tinad.fr/trackback/665

Fil des commentaires de ce billet

Page top