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"));