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 :

trier une variable de Type Array a deux dimension


Sujet :

JavaScript

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 849
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 849
    Par défaut trier une variable de Type Array a deux dimension
    Bonjour,

    j'ai un array a 2 dimensions (4 champs par ligne)
    Chaque élément est de type string => comment fait-on pour le classer par ordre alphabétique en fonction du numéro de la colonne choisie ?

    attention, j'ai besoin que le script soit le plus rapide possible car je traite des gros tableaux (je n'ai pas le choix => impossible de faire le trie sur le serveur)

    merci d'avance

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    Bonjour,

    j'ai un array a 2 dimensions (4 champs par ligne)
    Chaque élément est de type string => comment fait-on pour le classer par ordre alphabétique en fonction du numéro de la colonne choisie ?

    attention, j'ai besoin que le script soit le plus rapide possible car je traite des gros tableaux (je n'ai pas le choix => impossible de faire le trie sur le serveur)

    merci d'avance
    C'est un array javascript ou un <table> HTML ?

    Dans le cas de l'array JS tu fais appel à la méthode sort de Array en lui passant une fonction en paramètre. Tu encapsules tout ça dans une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function sortByCol(array, colNum) {
    	return array.sort(function(rowA,rowB) {
    		var a = rowA[colNum], 
    			b = rowB[colNum];
     
    		return	a<b ? -1 : 
    				a>b ? 1 : 0;
    	}
    }
     
     
    var sortedArray = sortByCol(array, 1);

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    sujet déja traité avec un post dans les contributions si ma mémoire est bonne ???
    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
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 849
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 849
    Par défaut
    merci gatsu ça marche nickel

    Citation Envoyé par SpaceFrog Voir le message
    sujet déja traité avec un post dans les contributions si ma mémoire est bonne ???
    => j'ai fait des recherches sur le fofo avec les mots clef "trie + tableau" mais rien trouvé ...

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 849
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 849
    Par défaut
    dans mon tableau je n'ai que des string, voici un exemple de valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "aaa"
    "01"
    "zzzz"
    "2"
    "yy"
    "123"
    "uu1"
    "1"
    => je veux donc mettre en premier les nombres (par ordre croissant") puis les chaines de caractères par ordre croissant alphanumérique

    est-ce que vous auriez fait comme ça (ça à l'air de fonctionner) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    // trie le tableau
    function sortByCol(array, colNum) {
     
    	return array.sort(function(rowA,rowB) {
    		var a, b;
     
    		if(isNumeric(rowA[colNum])){
     
    			if(isNumeric(rowB[colNum])){
    				a = rowA[colNum]*1;			
    				b = rowB[colNum]*1;
     
    				// num / num
    				return	a<b ? -1 : (a>b ? 1 : 0);
    			} else {
     
    				// num / str
    				return	-1;
    			}
    		} else {
     
    			if(isNumeric(rowB[colNum])){
    				// str / num
    				return	1;
     
    			} else {
    				a = "" + rowA[colNum];	
    				b = "" + rowB[colNum];	
     
    				// str / str
    				return	a<b ? -1 : (a>b ? 1 : 0);
    			}
    		}
     
    	});
    }

Discussions similaires

  1. Trier une variable de type List(Of T)
    Par Kropernic dans le forum VB.NET
    Réponses: 9
    Dernier message: 23/09/2010, 14h01
  2. Réponses: 4
    Dernier message: 15/04/2010, 09h34
  3. [XSLT] liste d'élements dans une variable de type array ?
    Par r-zo dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 15/01/2010, 09h16
  4. Definir une variable de type "array" ?
    Par Seb33300 dans le forum iReport
    Réponses: 2
    Dernier message: 01/12/2009, 15h28
  5. [C++/CLI] Libérer une variable du type cli::array
    Par ekinox17 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 25/01/2006, 09h16

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