Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
15 sept. 2006 à 18:56
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
19 sept. 2006 à 10:20
Bonjour à tous,
je me demande pourquoi quand je trie mon tableau alphabétiquement, ils sont tous bon sauf le premier qui est mis en dernière position ! et je me suis rendu compte que l'ordre du tableau avant que je le trie avait une influence sur son ordre après le tri, ce qui est le comble.
En vrai, j'utilise une fonction de callback un tout petit plus compliqué mais à peine (histoire de colonne de tableau). Mais même en utilisant sort() tout court, j'ai le même problème.
function tri_contacts(a, b){ //fonction callback pour le tri du tableau contacts
if(a.toUpperCase() > b.toUpperCase()){
return 1;
}
else {
return -1;
}
}
for(i in contacts){
document.write(contacts[i]); //pour voir le tableau
}
contacts = contacts.sort(tri_contacts);
for(i in contacts){
document.write(contacts[i]); //pour voir le tableau
}
le tableau à l'origine :
Lamlin Meliline Alineme Kapersky Bouloré Vakhoff
après le tri :
Bouloré Kapersky Lamlin Meliline Vakhoff Alineme
_ faudrait voir comment est décrit le tableau, comment on appelle
les fonctions....
_ pour le moins curieux d'avoir à trier un tableau conçu, à priori,
comme un tableau associatif ?
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 16 sept. 2006 à 20:59
Bonjour Bultez,
tu as raison pour le tri d'un tableau associatif : de toute façon ça me pose problème qu'il réinitialise les clés, je ne dois pas utiliser sort...
Après un test, le constat est simple :
mon tableau était par exemple (il n'existe pas forcément de tab[0] ou de tab[2]) :
tab[1][nom] = Pierre
tab[1][mail] = pierre@yahoo.fr
tab[5][nom] = Alain
tab[5][mail] = alain@yahoo.fr
tab[3][nom] = Jean
.....
et en utilisant sort, si je fais un dump, ça me donne ça :
tab[1][nom] = Jean
tab[1][mail] = jean@yahoo.fr
tab[2][nom] = Pierre
tab[2][mail] = pierre@yahoo.fr
.......
et seulement à la fin :
tab[0][nom] = Alain
tab[0][mail] = alain@yahoo.fr
donc en fait quand il trie mon tableau, il met la case 0 tout à la fin.
Je fais autrement pour l'instant donc le problème ne se pose plus, mais c'est bizarre, c'est pareil sous IE et FF.
à+
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 17 sept. 2006 à 10:02
euh... je ne sais pas si j'ai été très clair...
sont-ce mes gouttes prises hier soir dans mon bourbon
ou le vin rouge du petit déjeuner ce matin qui était frelaté....
<HTML Lang="fr">
<HEAD>
<TITLE></TITLE>
</HEAD>
<Script type="Text/JavaScript"><!----------
var tab=new Array();
tab["pierre"]="pppp";
tab["alain"]="aaaa";
tab.sort();
for ( a in tab )
alert ( a+"="+tab[a] );
//----------></Script>
</HTML>
on peut bien entendu faire du multi zones ( tab["cle"]=new Array()... )
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 18 sept. 2006 à 10:10
contraignant ?
le tri ? array.sort(), et c'est tout, difficile de faire plus court/mieux !
le tableau associatif ? on n'est nullement obligé d'utiliser "l'associatif'"
( même si ça me semble bien propre sur soi ).
<hr />
cordialement Bul mon SiteM'écrire<hr />
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 19 sept. 2006 à 08:31
Justement !
une seule option de tri, et celle du callback, c'est limité! qd on vient de php, on regrette les options insensibles à la casse, tri naturel, constantes de tri, tri inverse, tri par clés, tri avec ou sans reinitialisation des clés, tri multidimensionnel standardisé...
donc c'est contraignant de faire des tableaux qui doivent obligatoirement être construits de manière à fonctionner avec les fonctions natives de javascript.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 19 sept. 2006 à 10:20
"un peu" plus complet nativement en php, certes.
faut le faire dans ce langage si c'est mieux.
pas "trop difficile" de concevoir ces fonctions en javascript,
on doit même les trouver sur le web à mon humble avis.
<hr />
cordialement Bul mon SiteM'écrire<hr />