Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 16/03/2010, 14h45   #1
Membre confirmé
 
Inscription : septembre 2009
Messages : 713
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 713
Points : 207
Points : 207
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
boboss123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 15h43   #2
Inactif
 
Inscription : novembre 2002
Messages : 117
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 117
Points : 123
Points : 123
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 :
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);
Gatsu35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 15h57   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 29 075
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 29 075
Points : 43 303
Points : 43 303
sujet déja traité avec un post dans les contributions si ma mémoire est bonne ???
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 16h29   #4
Membre confirmé
 
Inscription : septembre 2009
Messages : 713
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 713
Points : 207
Points : 207
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é ...
boboss123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 17h12   #5
Membre confirmé
 
Inscription : septembre 2009
Messages : 713
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 713
Points : 207
Points : 207
dans mon tableau je n'ai que des string, voici un exemple de valeur :
Code :
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 :
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);
			}
		}
 
	});
}
boboss123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 03h13.


 
 
 
 
Partenaires

Hébergement Web