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

Contribuez Discussion :

[FAQ] Tri alphanumérique d'un tableau (array)


Sujet :

Contribuez

  1. #1
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut [FAQ] Tri alphanumérique d'un tableau (array)
    Code javascript : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    /*
     * Daniel Hagnoul et SpaceFrog
     * 
     * Tri alphanumérique d'un tableau (array) en ordre ascendant par défaut.
     * Le tableau ne peut contenir que du texte ! Par exemple, pas [2.00] mais ["2.00"] !
     * Pour le tri descendant : sortTable(tab, "desc");
     */
    function sortTable(table, ordre){
    	/*
    	 * SpaceFrog
    	 */
    	function replaceSpec(Texte){
    		var TabSpec = {"à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","è":"e","é":"e","ê":"e","ë":"e","ç":"c","ì":"i","í":"i","î":"i","ï":"i","ù":"u","ú":"u","û":"u","ü":"u","ÿ":"y","ñ":"n","-":" ","_":" "},
    			reg=/[àáâãäåòóôõöøèéêëçìíîïùúûüÿñ_-]/gi;
     
    		return Texte.replace(reg, function(){
    			return TabSpec[arguments[0].toLowerCase()];
    		}).toLowerCase();
    	}
     
    	/*
    	 * Daniel Hagnoul
    	 */
    	if (ordre == 'desc'){
    		table.sort(function(a, b){
    			var x = parseInt(a, 10),
    				y = parseInt(b, 10),
    				c1 = replaceSpec(a),
    				c2 = replaceSpec(b);
     
    			if (isNaN(x) || isNaN(y)){
    				if (c1 > c2){
    					return -1;
    				} else if(c1 < c2){
    					return 1;
    				} else {
    					return 0;
    				}
    			} else {
    				return(b - a);
    			}
    		});
    	} else {
    		table.sort(function(a, b){
    			var x = parseInt(a, 10),
    				y = parseInt(b, 10),
    				c1 = replaceSpec(a),
    				c2 = replaceSpec(b);
     
    			if (isNaN(x) || isNaN(y)){
    				if (c1 > c2){
    					return 1;
    				} else if(c1 < c2){
    					return -1;
    				} else {
    					return 0;
    				}
    			} else {
    				return(a - b);
    			}
    		});
    	}
     
    	return table;
    }
     
    // le tableau ne doit contenir que des éléments textes, pas de 2.00 au lieu de "2.00"
    var table = ["enchanteur", "réel", "échange", "indélicat", "en vrac", "véridique", "2.00", "23.25", "éparpiller", "bon", "échangiste", "échangeur", "enchanté", "Allo", "2.64", "23.02", "2.05", "23.00"];
     
    // Firebug
    console.log(sortTable(table));
    console.log(sortTable(table, "desc"));

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. [JavaScript] Suppression des multiples dans un tableau (array) alphanumérique
    Par danielhagnoul dans le forum Contribuez
    Réponses: 0
    Dernier message: 07/06/2011, 11h40
  2. Tableau(Array) sans taill
    Par krfa1 dans le forum ASP
    Réponses: 4
    Dernier message: 21/09/2005, 22h31
  3. tableau array
    Par laclac dans le forum Langage
    Réponses: 8
    Dernier message: 01/09/2005, 11h04
  4. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  5. Réponses: 2
    Dernier message: 08/04/2004, 16h30

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