Tri d'un tableau associatif

[Résolu]
Signaler
Messages postés
42
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
18 août 2010
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
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        
Messages postés
450
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
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.