Tri de tableau associatif

cydelic Messages postés 3 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 1 avril 2005 - 17 mars 2005 à 17:19
cydelic Messages postés 3 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 1 avril 2005 - 18 mars 2005 à 08:23
Bonjour,
J’ai un petit problème de tri... je vous explique
Rien de bien compliquer, j’ai un tableau associatif du genre :
<tt>


var tab = new Array();

tab['deux'] = 2;

tab['trois'] = 3

tab['un'] = 1;


</tt>



Je voudrai donc le trier on fonction de la valeur pour avoir : un=>1,deux=>2,trois=>3
J’utilise la fonction sort :
<tt>


tab = tab.sort();


</tt>



Mais le tableau n’est pas trier... :(


Si quelqu’un à une petit idée ?


Merci

2 réponses

GhislainLavoie Messages postés 289 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 3 avril 2008 3
18 mars 2005 à 04:31
Salut,

Un tableau associatif ne répond pas aux même norme que ceux définis par un tableau avec un index. La boucle for in qui permet d'extraire les données répond à la logique de l'ordre d'entré dans le tableau.

Je crois que tu devras refaire le tableau pour mettee l'ordre dans lequel tu veux.

Exemple :


function tri
(array
)

{

var nums
=
new Array
();

var attrs
=
new Array
();

var cpt
=
0;

for
(attr
in array
)
{
nums
[cpt
]
= array
[attr
]
attrs
[cpt
++]
= attr;

}

for
(i
=0;i
<cpt
-1;i
++)

for
(j
= i
+1;j
<cpt;j
++)

if
(nums
[i
]>nums
[j
])

{
t
= nums
[j
];
nums
[j
]
= nums
[i
];
nums
[i
]
= t;
t
= attrs
[j
];
attrs
[j
]
= attrs
[i
];
attrs
[i
]
= t;

}

var array
=
new Array
();

for
(i
=0;i
<cpt;i
++)
array
[attrs
[i
]]
= nums
[i
];

return array;

}

Et pour l'utiliser, appeler la fonction comme ceci :


tab = tri
(tab
);

A+, Ghislain
0
cydelic Messages postés 3 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 1 avril 2005
18 mars 2005 à 08:23
Merci pour la réponse ça comfirme bien ce que je pensais, il n’y a pas
de fonction du langage déjà prevus pour les tableaux associatifs


Merci
0
Rejoignez-nous