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

  1. #1
    Rédacteur

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

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

    Informations forums :
    Inscription : février 2009
    Messages : 6 127
    Points : 22 199
    Points
    22 199
    Billets dans le blog
    63

    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



    Nota bene : si vous devez être compatible avec les navigateurs obsolètes (IE8 et plus), vous devez convertir les codes ES2015 en ES5 avec Babel.

    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 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Belgique

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

    Informations forums :
    Inscription : février 2009
    Messages : 6 127
    Points : 22 199
    Points
    22 199
    Billets dans le blog
    63

    Blog



    Nota bene : si vous devez être compatible avec les navigateurs obsolètes (IE8 et plus), vous devez convertir les codes ES2015 en ES5 avec Babel.

    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