Tri d'un tableau associatif

Résolu
cs_flexx Messages postés 42 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 18 août 2010 - 6 mars 2007 à 16:00
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 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

2 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 mars 2007 à 16:52
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        
3
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
6 mars 2007 à 16:12
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.
0
Rejoignez-nous