IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Trier un tableau à deux dimensions par colonnes [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 48
    Points
    48
    Billets dans le blog
    1
    Par défaut Trier un tableau à deux dimensions par colonnes
    Bonjour à tous.

    J'ai tenté de vouloir faire une sorte de ORDER BY, mais en javascript, pour un tableau à deux dimensions bien définies.

    Par exemple, mettons que nous avons ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var sitesInternet=Array();
    sitesInternet[0]=new Array();
    sitesInternet[0]['nom']='developpez';
    sitesInternet[0]['note']='10';// genre...
    sitesInternet[1]=new Array();
    sitesInternet[1]['nom']='google';
    sitesInternet[1]['note']='9';// Bah ouais quand même
    sitesInternet[2]=new Array();
    sitesInternet[2]['nom']='microsoft';
    sitesInternet[2]['note']='0';// Boouh ! VISTA !
    Donc si je trie mon tableau par la colonne "nom", j'obtiendrai donc dans l'ordre :
    "developpez","google","microsoft"
    Et si je trie par notes, j'aurai :
    "developpez","google","microsoft"

    ...

    Non finalement, on va rajouter un Linux pour mieux comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sitesInternet[3]=new Array();
    sitesInternet[3]['nom']='linux';
    sitesInternet[3]['note']='10';
    Donc on peut obtenir différents ordres en fonction du critère de tri par colonne "nom" ou "note" (respectivement, "developpez","google","linux","microsoft" et "developpez","linux","google","microsoft")

    Voici ma fonction de tri par colonnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function userDefinedFunction_sortByColumn(columnName)
    {
    	var arrayToSort=new Array();
    	for(i=0;i<this.length;i++)
    		arrayToSort[i]=this[i][columnName]+'-'+i;
    	arrayToSort.sort();
    	var arrayToReturn=new Array();
    	for(i=0;i<arrayToSort.length;i++)
    		arrayToReturn[i]=this[arrayToSort[i].replace(/-([0-9]+)$/,'$1')];
    	this=arrayToReturn;
    }
    Array.prototype.sortByColumn=userDefinedFunction_sortByColumn;
    En gros, je parcours tous les éléments des colonnes "columnName" et ajoute un petit suffixe.
    La fonction native à javascript sort(), me trie ce qu'il faut, puis je récupère, via expressions régulières les indexs placés pour réordonner mon nouveau tableau.

    Le problème : Tu peux pas test le "this=<quelquechose>". Il aime pas.

    D'un autre côté, ça me dérange pas, car je pourrais très bien faire un classique "return //to the future", mais je me demandais s'il était possible de le faire, sachant qu'à priori, ma syntaxe me paraissait correcte :/

    EDIT : SpaceFrog, m'a dit que c'était dans les contribs... j'avais pas cherché au bon endroit .. .gomen

    RE-EDIT : Pour ceux qui cherchent une fonction de tri de tableau à 2 dimensions moins complexe, c'est par ici : http://www.developpez.net/forums/sho...d.php?t=135913

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    tu peux recopier les valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	for(i = 0; i < this.length; i++)	{
    		this[i] = output[i];
    	}

    Je comprends pas trop ton histoire de suffixe.
    Vive les roues en pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Syntaxe pour trier un tableau à deux dimensions
    Par Lekno dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 15/10/2013, 15h37
  2. Réponses: 1
    Dernier message: 14/04/2010, 17h13
  3. Trier un tableau à deux dimensions
    Par ghost emperor dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/04/2008, 15h51
  4. Réponses: 1
    Dernier message: 11/02/2008, 16h45
  5. [Tableaux] Trier tableau deux dimensions
    Par dondano dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2006, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo