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 12/09/2011, 18h36   #1
Membre Expert
 
Avatar de ludojojo
 
Homme Ludovic Solczynski
Développeur .NET
Inscription : avril 2008
Messages : 1 446
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Solczynski
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2008
Messages : 1 446
Points : 2 179
Points : 2 179
Par défaut [Debutant]ParseInt sur un Array

Bonjour,

Je cherche à réaliser un graphique pour ma page Web. Les données sont dynamiques et proviennent d'une base de données.
Pour cela j'utilise une fonction php qui me donne les informations nécessaires.

Je ne connais pas le nombre d'arguments à l'avance. Par conséquent, j'utilise cette méthode pour récupérer l'information :
Code :
var args = Array.prototype.slice.call(arguments);
Si je fait un alert(args) j'obtiens bien les valeurs que je souhaites. Jusque là parfait.
En revanche lorsque je veux les utiliser dans mon script, cela ne fonctionne pas car les données sont récupérer en texte...

Voici le script que je souhaite utiliser :
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
<script type="text/javascript">
var chart;
function ShowChart()
{
	var args = Array.prototype.slice.call(arguments);
	chart = new Highcharts.Chart({
		chart: {renderTo: 'container',defaultSeriesType: 'column'},
		title: {text: 'Statistiques mensuelles'},
		subtitle: {text: 'Source: ZEFIR'},
		xAxis: {
			categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Total']
			},
		yAxis: {min: 0,	title: {text: 'Nombre de dépôts'}},
		legend: {
			layout: 'vertical',
			backgroundColor: '#FFFFFF',
			align: 'left',
			verticalAlign: 'top',
			x: 100,
			y: 70,
			floating: true,
			shadow: true
			},
		tooltip: {
			formatter: function() {
				return ''+
				this.x +': '+ this.y +' dépôts';
			}
			},
		plotOptions: {column: {pointPadding: 0.2,borderWidth: 0}},
		series: [{
			name: '2010',
			data: [10,25,45,68,359,51,254,457,48,36,125,756,124]
			}]
		});
	};
</script>
Je souhaites remplacer data: [10,25,45,68,359,51,254,457,48,36,125,756,124] par les valeurs comprisent dans "args".
Si je met data: [parseFloat(args)] alors je ne récupère que la première valeur...

Une idée ?

Merci par avance.
__________________
Aide les autres...
Et les autres t'aideront....
Mon site DVP
Mon site perso

N'oubliez pas de voter pour les messages dont la réponse est pertinente
ludojojo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 19h54   #2
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
salut,

un truc très simple :
Code :
1
2
3
4
5
6
data: function(arg){
 var theGoodArray=[];
 for(var i =0; ...)
  theGoodArray[i]=parseFloat(arg[i]);
 return theGoodArray;
}(args)
tu peux également utiliser la fonction map qui t'épargnes quelques lignes
Code :
data:args.map(function(x){return parseFloat(x);})
ou plus court :
Code :
data:args.map(parseFloat)
à la syntaxe près!
cette dernière étant dispo chez ff, les autres navigateurs, je ne sais pas.
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 20h35   #3
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 871
Points : 1 380
Points : 1 380
Code :
data:[].map.call(arguments,parseFloat);
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/09/2011, 11h54   #4
Membre Expert
 
Avatar de ludojojo
 
Homme Ludovic Solczynski
Développeur .NET
Inscription : avril 2008
Messages : 1 446
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Solczynski
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2008
Messages : 1 446
Points : 2 179
Points : 2 179
Alors, je me sens vraiment tout petit...
Code :
data:args.map(parseFloat)
Parfait ! Sauf que...
Pas moyen de l'utiliser sous IE.
Je suis donc obligé d'utiliser ce code :
Code :
1
2
3
4
5
6
data: function(arg){
var theGoodArray=[];
for(var i =0; i<args.length; i++)
	theGoodArray[i]=parseFloat(arg[i]);
return theGoodArray;
}(args)
Merci !
__________________
Aide les autres...
Et les autres t'aideront....
Mon site DVP
Mon site perso

N'oubliez pas de voter pour les messages dont la réponse est pertinente
ludojojo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 14h41   #5
Membre Expert
 
Avatar de ludojojo
 
Homme Ludovic Solczynski
Développeur .NET
Inscription : avril 2008
Messages : 1 446
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Solczynski
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2008
Messages : 1 446
Points : 2 179
Points : 2 179
Juste une dernière précision concernant ce script SVP...
Je souhaiterais rajouter un premier argument de ma fonction, l'année en question dans le graphique. (Pas de soucis pour récupérer cette information.)
Mon problème c'est que si je modifie le script de cette façon :
Code :
1
2
3
4
5
6
7
name: args[0],
data: function(arg){
	var theGoodArray=[];
	for(var i=1; i<args.length; i++)
		theGoodArray[i]=parseFloat(arg[i]);
	return theGoodArray;
}(args)
Plus rien ne fonctionne...
Si je fais :
Code :
1
2
3
4
5
6
7
name: args[0],
data: function(arg){
	var theGoodArray=[];
	for(var i=0; i<args.length; i++)
		theGoodArray[i]=parseFloat(arg[i+1]);
	return theGoodArray;
}(args)
Alors cela fonctionne mais je me retrouve avec un colonne de trop et vide puisque pas de valeur associé sur le dernier n+1...
Une idée de comment faire ma boucle ?
__________________
Aide les autres...
Et les autres t'aideront....
Mon site DVP
Mon site perso

N'oubliez pas de voter pour les messages dont la réponse est pertinente
ludojojo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 17h43   #6
Membre Expert
 
Avatar de ludojojo
 
Homme Ludovic Solczynski
Développeur .NET
Inscription : avril 2008
Messages : 1 446
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Solczynski
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2008
Messages : 1 446
Points : 2 179
Points : 2 179
Bon en testant un peu dans tous les sens... J'ai fini par trouver la solution :
Code :
1
2
3
4
5
6
7
8
 
name: args[0],
data: function(arg){
	var theGoodArray=[];
	for(var i=0; i<args.length-1; i++)
		theGoodArray[i]=parseFloat(arg[i+1]);
	return theGoodArray;
}(args)
__________________
Aide les autres...
Et les autres t'aideront....
Mon site DVP
Mon site perso

N'oubliez pas de voter pour les messages dont la réponse est pertinente
ludojojo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 18h09   #7
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 871
Points : 1 380
Points : 1 380
Sans t'amuser avec des "-1" :

Code :
1
2
3
4
5
6
7
8
9
var args = Array.prototype.slice.call(arguments,1);
 
name: arguments[0],
data: function(arg){
	var theGoodArray=[];
	for(var i=0; i<args.length; i++)
		theGoodArray[i]=parseFloat(arg[i]);
	return theGoodArray;
}(args)
edit:
Pourquoi ne pas passer directement un tableau de float en argument ?
du genre :

Code :
ShowChart("name",[10,25,45,68,359,51,254,457,48,36,125,756,124]);
ça t'évitera tous tes problèmes de parseFloat et de découpe de ton tableau.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h04.


 
 
 
 
Partenaires

Hébergement Web