|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : tri d'un array multidimensionnel par colonne [ JavaScript et le navigateur / Autre ] (ludovicanceaux)
Informations & options pour cette discussion
|
mardi 7 août 2007 à 17:17:17 |
tri d'un array multidimensionnel par colonne

ludovicanceaux
|
Salut à tous, Comment peut t'on procéder pour
trier un tableau multidimensionnel (le mien n'a que 2 colonnes) par la
deuxième colonne par exemple. car en fait j'ai une fonction qui insère
récursivement, au chargement de la page, des données ex: add_array("http://www.dpm-motors.com/","ASTON MARTIN","Vanquish S","","Noir","12 000","Cuir noir","2005","08/09/2005","","220 000 EUR","Aston5859.JPG|Aston5859A.JPG|Aston5859B.JPG"); add_array("http://www.dpm-motors.com/","AUDI","A3 1,8 L Turbo Quattro","","Bleu","63 036","Cuir beige","2003","06/01/2003","PDC, CD, 5P.Ambiente","14 800 EUR","AUDIA5678.JPG");
function add_array(url_garage,marque,modele,categorie,couleur,kilometrage,interieur,millesime,immat,option,prix_ttc,photo){ var id=fiches_array.length; fiches_array[id]=new Array(); fiches_array[id][1]=marque; fiches_array[id][2]=modele; fiches_array[id][3]=categorie; fiches_array[id][4]=kilometrage; fiches_array[id][5]=couleur; fiches_array[id][6]=interieur; fiches_array[id][7]=option; fiches_array[id][8]=prix_ttc; fiches_array[id][9]=photo; fiches_array[id][10]=immat; }et
en fait je voudrais trier par marque ou bien par modele, j'ai essayé
fiches_array.sort();, ca me trie par rapport à la 1ère colonne, mais je
peux pas trier par rapport aux autres. Merci d'avance
|
|
|
|
mardi 7 août 2007 à 18:21:48 |
Re : tri d'un array multidimensionnel par colonne

the_wwt
|
Bonjour, implémente toi un petit tri à bulle et définit une fonction de comparaison qui prend deux objets. Cordialement, Pierrick
|
|
|
|
mardi 7 août 2007 à 18:56:40 |
Re : tri d'un array multidimensionnel par colonne

the_wwt
|
Je me suis rappelé que le tri a bulle n'est pas trop perfectionné, donc voici l'implémentation pour ton besoin avec un tri par fusion o(nlogn), Il te faut rajouter les autres propriétés de comparaison, Les fonctions de tri sont à peines tester alors si c'est pour de la prod, jettes y un coup d'oeil sérieux. Cordialement, Pierrick <----------------------------------------------------------------------------------------------------------------->
<html> <head> <title></title> <script language="javascript" type="text/javascript"> <!-- var fiches_array = [];
function add_array(url_garage,marque,modele,categorie,couleur,kilometrage,interieur,millesime,immat,option,prix_ttc,photo){ var id=fiches_array.length; fiches_array[id]=new Array(); fiches_array[id][1]=marque; fiches_array[id][2]=modele; fiches_array[id][3]=categorie; fiches_array[id][4]=kilometrage; fiches_array[id][5]=couleur; fiches_array[id][6]=interieur; fiches_array[id][7]=option; fiches_array[id][8]=prix_ttc; fiches_array[id][9]=photo; fiches_array[id][10]=immat; }
function compareObjet(o1, o2, sortColumn, sortOrder){ if( sortColumn == "modele"){ return sortOrder > 0 ? o1[2] < o2[2] : o1[2] > o2[2]; }else{ return sortOrder > 0 ? o1[1] < o2[1] : o1[1] > o2[1]; } }
function fusion(t, tmp, de1, vers1, de2, vers2, count, posInB, sortColumn, sortOrder) { for(var i = 0 ; i < count ; i++) { if(de2 > vers2) tmp[posInB++] = t[de1++]; else if(de1 > vers1) tmp[posInB++] = t[de2++]; else if(compareObjet(t[de1], t[de2], sortColumn, sortOrder)) tmp[posInB++] = t[de1++]; else tmp[posInB++] = t[de2++]; } return tmp; } function triFusion(t, sortColumn, sortOrder) { var tmp = []; var sortLength = 1, de1, de2, de3, i; while(sortLength < t.length) { de1 = 0; while(de1 < t.length) { de2 = de1 + sortLength; de3 = de2 + sortLength; if(de2>t.length) de2 = t.length; if(de3>t.length) de3 = t.length; tmp = fusion(t, tmp, de1, de2-1, de2, de3-1, de3-de1, de1, sortColumn, sortOrder); de1 = de3; } for(i = 0 ; i < t.length ; i++) t[i] = tmp[i]; sortLength *= 2; } return t; }
function afficher( s ){ s += "\n[\n"; for(var i = 0; i < fiches_array.length; i++){ s += " " + i + "={\n"; s+=" marque: " + fiches_array[i][1] + ",\n"; s+=" modele: " + fiches_array[i][2] + ",\n"; s += " }"; if(i < fiches_array.length - 1) s+=",\n"; } s += "\n]"; alert(s); }
add_array("http://www.dpm-motors.com/","ASTON MARTIN","Vanquish S","","Noir","12 000","Cuir noir","2005","08/09/2005","","220 000 EUR","Aston5859.JPG|Aston5859A.JPG|Aston5859B.JPG"); add_array("http://www.dpm-motors.com/","AUDI","A3 1,8 L Turbo Quattro","","Bleu","63 036","Cuir beige","2003","06/01/2003","PDC, CD, 5P.Ambiente","14 800 EUR","AUDIA5678.JPG");
//On lance le tri triFusion(fiches_array, "modele", 1); // Tri ascendant afficher("Tri ascendant modele"); triFusion(fiches_array, "modele", -1); // Tri descendant afficher("Tri descendant modele");
triFusion(fiches_array, "marque", 1); // Tri ascendant afficher("Tri ascendant marque"); triFusion(fiches_array, "marque", -1); // Tri descendant afficher("Tri descendant marque"); --> </script>
</head> <body> </body> </html>
|
|
|
|
mardi 7 août 2007 à 20:11:37 |
Re : tri d'un array multidimensionnel par colonne

ludovicanceaux
|
Salut à tous,
En effet c'est pour de la prod, je te remercie, je vais voir ca 2m1, une chose qui m'étonne c'est qu'on est obligé de faire une fonction, nous même, et que ca n'existe pas une toute prête comme sort(), qui existe déjà!!!!
Merci je vais regarder ca serieusement 2m1
|
|
|
|
mardi 7 août 2007 à 21:04:25 |
Re : tri d'un array multidimensionnel par colonne

the_wwt
|
Bonjour, une idée intérressante serait de proposer une source qui ajoute une méthode à la classe Array de tri qui prendrai une fonction de comparaison en paramètre. Du genre : Array.prototype.sortAs = function( compareFunction ){ //Une boucle de tri // Un test avec appel de la fonction de comparaison if( compareFunction( o1, o2) < 0 ) //Inversion ou fusion } Cordialement, Pierrick
|
|
|
|
mardi 7 août 2007 à 21:06:48 |
Re : tri d'un array multidimensionnel par colonne

the_wwt
|
A noter, J'ai rarement vu des tri en javascript coté client... La raison est simple, souvent le client n'a accès qu'à une portion de la collection pour cause de rapidité. Le tri est fait coté serveur, d'ailleurs souvent en SQL. Une solution sympas est le Rico Live Grid qui gère cela très bien en ajax en plus. Cordialement, Pierrick
|
|
|
|
mercredi 8 août 2007 à 01:03:17 |
Re : tri d'un array multidimensionnel par colonne

Arto_8000
|
the_wwt -> Tu veux dire quelque chose comme ça ?
["test","123","nmjj","free","!@","dddd"].sort(function (element1,element2){
if (element1 < element2)
{
return -1;
}
if (element1 == element2)
{
return 0;
}
if (element1 > element2)
{
return 1;
}
});
|
|
|
|
mercredi 8 août 2007 à 01:04:25 |
Re : tri d'un array multidimensionnel par colonne

ludovicanceaux
|
Salut à tous,
Bah en fait ce n'est pas possible de faire des requete SQL car c'est un site qui va réferencer 5 sites d'annonces automobiles différents j'ai donc crée 5 fichiers XML (sur chacun des sites) et donc là j'ai tout rappatrié dans mon tableau qui est en javascript, mais pour trier ma liste je n'ai pas de problème, en effet je me sert de DOM, par contre j'ai besoin de faire des champ (via le control select) ou je rappatrie mes marque dans le champ marque alphabetiquement et modele dans le champ modele alphabetiquement aussi...
Merci d'avance
|
|
|
|
mercredi 8 août 2007 à 09:33:27 |
Re : tri d'un array multidimensionnel par colonne

the_wwt
|
Bonjour, Arto_8000 -> Oui tout a fait, je ne pense pas qu'elle existe... me trompai-je? ludovicanceaux -> Bon et bien par sur cette solution en javascript... Je te fais le bout de code pour étendre la classe Array, si ça intéresse quelqu'un... Cordialement, Pierrick
|
|
|
|
mercredi 8 août 2007 à 09:54:59 |
Re : tri d'un array multidimensionnel par colonne

the_wwt
|
Re... Ok merci Arto_8000, je ne connaissai pas cette fonction... Bien voilà, tu as ta réponse ludovicanceaux. Cordialement,
|
|
|
Cette discussion est classé dans : colonne, id, array, jpg, fiches
Répondre à ce message
Sujets en rapport avec ce message
effet de survol sur une colonne [ par matt438 ]
salutj'ai pb de création javscript/cssje voudrais créer un effet de survol sur une colonne d'un tableau. je n'ai réussi qu'à le faire en appelant l'id
editeur menu [ par rosalin83 ]
bonsoir,je vx creer un editeur de menu avec javascript voilà ce que j'ai fait mais j'ai trouvé des dificultés au niveau de l'etape suivante plus préci
2 Select liés ensemble [ par folkene ]
Voila je me suis un peu inspirer de ce que j'ai trouvé sur ce forum, je l'ai modifié mais je l'ai mal fait, resultat mes tableau se créent bien, mes f
problème affichage texte temporisé pour diaporama [ par pascaloug ]
Est-ce que quelqu'un peut m'aider à trouver l'erreur dans le javascript ci-dessous pour afficher un titre temporisé dans mon diaporama SVP ?La solutio
Récupération des champs d'un formulaire dynamique [ par Crabece ]
Bonjour à tous,Je vous expose mon problème en essayant d'etre le plus claire possible :Je travaille actuellement sur un site de vente en ligne et mon
Problème de listes déroulantes liées [ par deatmead ]
Bonsoir tout le monde, Déjà j'esper poster dans la bonne section.Voilà après plusieurs jours de recherche, tuto, messages sur les forums, je n'arriv
Prob length sur un array associatifs [ par destiny ]
Bonjour,Tout est dans le titre, je me tue a essayer de connaitre le nbr d'enregistrement dans les deux tableaux ci-dessous ...Ca me retoure toujours
Problème avec un array de div et l'attribut className [ par Noursounet ]
Bonjour à tous,Je suis en train de développer un objet Multiview tout en javascript et je bute sur un problème qui je pense est lié à IE7. Le principe
class et id définis dans une même balise ? [ par sagat06 ]
Bonjour à tous.J'aimerais savoir s'il existe un moyen de définir à la fois la class et l'id d'une div, du genre:En effet, j'ai plusieurs div dans ma p
select lie [ par leon988 ]
Bonjour à tous, Pour mon site je dois créer un formulaire de recherche avec 3 selects Select1= selection d'une activite <p clas
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|