Tri d'un tableau associatif [Résolu]

cs_flexx 42 Messages postés vendredi 28 novembre 2003Date d'inscription 18 août 2010 Dernière intervention - 6 mars 2007 à 16:00 - Dernière réponse : cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention
- 6 mars 2007 à 16:52
Bonjour

Je souhaite savoir s'il est possible d'effectuer un tri sur un tableau associatif.

Par exemple, si j'ai le tableau suivant :
tab["val2"] = "test1";
tab["val3"] = "test2";
tab["val1"] = "test3";

J'aimerais pourvoir le trier selon les clés pour obtenir :
tab["val1"] = "test3";
tab["val2"] = "test1";

tab["val3"] = "test2";

Ce qui me permettrait d'avoir les valeurs dans l'ordre lors d'un parcours avec une boucle for-in par exemple.

Merci d'avance
Afficher la suite 

2 réponses

Répondre au sujet
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 6 mars 2007 à 16:52
+3
Utile
Bonjour,

lu sur selfHTML :

Les tableaux associatifs sont particulièrement indiqués en relation avec des tableaux à plusieurs dimensions. Ils permettent, indépendamment de la position, de rechercher la valeur d'un élément. L'inconvénient en est que les méthodes de l'objet Array ne lui sont pas applicables. De même les tableaux associatifs ne connaissent-ils pas la propriété length. Les éléments d'un tableau associatif ne peuvent toujours être adressés qu'avec leur nom ou par une boucle for-in.

donc tableau.sort() ne fonctionnerait pas.
il faudrait passer par un array intermédiaire...

<script type="text/javascript">
var tab=new Array();
tab["val2"] = "test1";
tab["val3"] = "test2";
tab["val1"] = "test3";
var res=new Array();
for ( var n in tab )
{
    res.push(n);
}
res.sort();
for ( var n=0;n<res.length;n++ )
{
    alert(res[n]);
}
</script>

si je ne dis pas de conneries...
trier un tableau associatif n'a pas de sens en soi.

<hr />


Cordialement            Bul        
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_bultez
stfou 454 Messages postés samedi 16 avril 2005Date d'inscription 18 avril 2007 Dernière intervention - 6 mars 2007 à 16:12
0
Utile
Pas sûr que ce soit très reglementaire ça... normalement c'est que des chiffres...
sinon pour trier un tableau "normal" de valeur, ya la fonction sort() :
montableau=["b","a",,"0","c"];
montableu=montableau.sort();
ce qui donnera :
montableau=["0","a","b","c"];

<hr />Le travail n'a jamais tué personne, mais pourquoi prendre le rique ?
document.write("Stfou");

//C'est en programmant que l'on devient programmeur.
Commenter la réponse de stfou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.