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

JavaScript Discussion :

Sort array javascript (par un autre)


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Inscrit en
    D�cembre 2010
    Messages
    258
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2010
    Messages : 258
    Par d�faut Sort array javascript (par un autre)
    Bonjour a tous,

    Je dispose de 3 arrays.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    prenoms = Array('alex','jean','paul','pierre','jacques','henri');
    noms = Array('toto','titi','tata','tutu','tita','totu');
    classement = Array('5A','4D','5A','3B','2C','3A');
    Et celui qui d�termine le tri :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ordre = Array('2C','3A','3B','4D','5A','5A');
    J'aimerai trier les trois premiers en fonction du dernier..
    Ce qui donnerait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    prenoms = Array('jacques','henri','pierre','jean','alex','paul');
    noms = Array('tita','totu','tutu','titi','toto','tata');
    classement = Array('2C','3A','3B','4D','5A','5A'); // si deux classement identiques, on trie sur le prénom
    Comment faire svp ?

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    A premi�re vue, le plus simple (oserais-je dire le plus coh�rent) serait de revoir la structure de tes donn�es de fa�on � pouvoir faire le tri facilement. Ce qui viendrait intuitivement � l'esprit serait un format JSON dont les cl�s seraient ton actuel tableau classement.

    Sinon, parcourir le tableau ordre (en r�cup�rant le rang de chaque �l�ment) et r�cup�rer la valeur de chaque autre tableau � l'indice en cours.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Il suffit de faire un array pour le tri..
    avec en index 0 l'�lement qui sert de base de tri, ici classement + pr�nom
    on trie ensuite cet array avec une fonction personnalis�e et le tour est jou�


    http://jsfiddle.net/4cxq13ra/2
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Ou encore pour conserver les �l�ments de chaque array s�par�s il suffit de modifier alors la fonction de tri perso
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var clsort= function (a,b){
            return  (a[0]+a[1]>b[0]+b[1])?1:-1;
    }

    http://jsfiddle.net/4cxq13ra/3/

    l'avantage de cette m�thode est que l'on peut trier sur n'importe quelle combinaison en modifiant juste la fonction de tri perso
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  5. #5
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Donc pr�nom, nom et classements sont li�s uniquement par l'index dans l'Array ? Quelle dr�le de fa�on de g�rer les donn�es. Je passerais plut�t par des objets :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var joueurs = prenoms.map(function(value,index){  
        return { prenom: value,  nom: noms[index], classement: classement[index] };
    });
    Une fois que les donn�es sont regroup�es au sein d'un object, on peut les trier comme on veut sans peur de mettre le d�sordre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    joueurs.sort(function(joueurA, joueurB){ return joueurA.classement < joueurB.classement ? 1 : -1; });
     
    console.log(joueurs[0]) // logge: { prenom: "jacques", nom: "titu", classement: "2A" }

  6. #6
    Membre �clair�
    Inscrit en
    D�cembre 2010
    Messages
    258
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2010
    Messages : 258
    Par d�faut
    Merci pour toutes vos r�ponses j'ai finalement fait le plus simple (pour moi en tout cas)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    ordre = Array('2C','3A','3B','4D','5A','5A');
    for (i=0;i<ordre.length;i++) {
    	for (a=0;a<prenoms.length;a++) {
    		if (classement[a] == ordre[i]) {
    			sortie += prenoms[a]+'  '+noms[a]+' '+classement[a];
    		}
    	}
    }

  7. #7
    Membre confirm�
    Femme Profil pro
    beler.fr
    Inscrit en
    Mars 2014
    Messages
    25
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : beler.fr
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 25
    Par d�faut array objets
    Bonjour,

    Tu peux m�moriser tes informations sous forme d��array� d�objets:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var persons = new Array();
    var obj = new Object();
    obj.prenom = "alex";
    obj.name = "toto";
    obj.classement = "5A";
    persons.push(obj);
     
    etc…  pour tous les éléments souhaités
    Pour trier, tu peux cr�er une fonction prototype du genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Array.prototype.sortBy = function (key) {
        this.sort(function (a, b) {
            if (a[key] < b[key]) {
                return -1;
            } else if (a[key] > b[key]) {
                return 1;
            }
            return 0;
        });
    };
    Bon courage!
    Mihaela
    blog.beleringenierie.com

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 16/04/2004, 16h31
  2. Comment lire un fichier DB en cours d'utilisation par 1 autr
    Par jbat dans le forum Bases de donn�es
    R�ponses: 4
    Dernier message: 12/03/2004, 11h06
  3. Rendre une disquette illisible par d'autres que moi
    Par kivoch dans le forum x86 16-bits
    R�ponses: 8
    Dernier message: 26/12/2003, 22h49
  4. sorte de valeur par defaut
    Par sampq dans le forum Langage SQL
    R�ponses: 2
    Dernier message: 25/07/2003, 11h59
  5. Comment subsituer un chemin par un autre dans un r�seau ?
    Par Baillard dans le forum D�veloppement
    R�ponses: 3
    Dernier message: 11/08/2002, 14h01

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