Bonjour,
Y a t-il moyen d'ordonner un Hash facilement?
J'ai l'impression que je cherche la lune.
Merci d'avance pour votre aide.
Bonjour,
Y a t-il moyen d'ordonner un Hash facilement?
J'ai l'impression que je cherche la lune.
Merci d'avance pour votre aide.
ordonner facile... mais heu tu entends quoi au juste pas hash ? un array ?
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
J'ai un HASH de ce type que j'aimerais ordonner par ordre alphabétique :
J'aimerais trier mon hash sur l'élément Nom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 {"id25":{"Identifiant":"id25", "Nom":"Blabla"}, "id40":{"Identifiant":"id40", "Nom":"Blibli"}, "id65":{"Identifiant":"id65", "Nom":"Bloblo"}, "id72":{"Identifiant":"id72", "Nom":"Blublu"}}
j'avoue que je coince ne sachant pas ce qu'est un hash ...
mais si tu peux paasser le hash en array par exemple au moyen d'un split ... l'array accepte le sort ...
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
Oui en plus c'est vrai que mon HASH n'en n'est pas vraiment un.
J'aimerais parcourir le hash sinon. Mais par indice (1,2,3, ...) et non par clé (id25, id40, id65, ...).
J'ai l'impression que c'est impossible.
a priori je dirais que si tu fais un split sur " tu devrais pouvoir obtenir un array exploitable ensuite
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
Ca c'est pas un hash c'est un objet !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var toto = {"id25":{"Identifiant":"id25", "Nom":"Blabla"}, "id40":{"Identifiant":"id40", "Nom":"Blibli"}, "id65":{"Identifiant":"id65", "Nom":"Bloblo"}, "id72":{"Identifiant":"id72", "Nom":"Blublu"}}
Si tu veux ensuite parcourir toutes les propriété de ce truc tu fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part toto.id25.Identifiant = "id25";
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (p in toto) { ... }
Oui c'est un objet JSon.
Mais j'aimerais le ranger par ordre alphabétique en choisissant de le trier par "Nom" par exemple.
Je voulais me faire une fonction pour ordonner ce genre d'objet. Mais la boucle du genre de ton "for" ne me permet pas de parcourir 2 éléments en même temps pour les comparer.
Du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part toto[i].Nom == toto[i+1].Nom. (Version hyper simplifié du test)
Dans ce cas là c'est ton objet qui est mal conçu![]()
![]()
Oui mais conçu comme il est conçu il me permet de le parcourir facilement aussi. :p
Dommage que le parcours de hash ne puisse pas se faire par index comme dans certains languages où les 2 parcours existent.![]()
a mon avis tu te pose un mauvais probleme.
Tu essaye de trier les propriété d'un objet !!! Il n'y a pas de notion d'ordre entre les props d'un objet !
Il faut que tu utilise alors les tableaux ([,,] il me semble)
ben heu Mr N c'est pas ce que je dis depuis le bébut ?
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
J'ai jamais dis le contraireEnvoyé par SpaceFrog
![]()
Oui mais en fait j'aimerais afficher la liste de ces objets mais pouvoir les trier pour les afficher dans un ordre concret pour le lecteur. Plutot qu'au hazard en affichant tel quel.
la seul solution "propre" que je vois c'est que tu parse les propriétés de ton objet et tu les mets dans un tableau, que tu tries.
A la rigueur dans le tableau tu met juste les critères de tri (le nom par ex) + la clefs...
Oui dommage de ne pas pouvoir utiliser les objets pour les mettre dans un tableau. Car si je modifie cet objet il me faut remonter pour aller le modifier.
Je crois que je vais me résigner à cette solution.![]()
Le problème majeur est qu'un tableau associatif (aussi appelé hash) perd une grande partie de ses propriétés de tableau.
L'autre problème est qu'il n'y a pas de relation d'ordre entre chaque élément d'un tableau associatif.
Pourquoi tablo['truc'] viendrait avant tablo['foobar'] ou inversement ? En javaScript il n'existe pas de relation d'ordre entre deux chaines de caractère.
D'ailleur pourquoi avoir comme des chaines de caractère comme indice de ton hash principal ? Selon moi il serait plus simple d'avoir un tableau indexé qui contienne plusieurs tableaux associatifs ou toute autre sorte d'objets. De plus si ton tableau principal devient indexé, alors il est aisé de faire un tri de ses éléments.
Je crois que vous avez raison j'ai fait un mauvais choix.
Je vais revoir si y'a pas moyen de faire quelque chose de mieux.
Merci pour votre aide.
Partager