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 22/07/2011, 00h05   #1
Nouveau Membre du Club
 
Homme
Inscription : février 2007
Messages : 94
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2007
Messages : 94
Points : 32
Points : 32
Par défaut fonction qui retourne un tableau

Salut tout le monde,
Une question toute bête: j'ai une fonction qui retourne un tableau, deux cas de figure apparaissent: le premier est que le tableau est plein et le deuxieme est que le tableau ne contient rien, donc vide. Dans le deuxieme cas, ma fonction retourne quoi au juste? est ce qu'elle retourne ceci [] ? logiquement oui, donc :
alert( retournerTableau()===[]);
Cette alert doit m'afficher true, hélas ca n'est pas le cas,elle m'affiche false tout le temps.
Merci d'avance.
bilou_2007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 01h27   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Tu peux renvoyer false si le tableau est vide.

Code :
1
2
// Retourne les données du tableau ou false s'il est vide
return (tableau.length>0) ? tableau : false;
Exemple
Code :
1
2
3
4
5
6
7
8
9
10
function retournerTableau(test){
	// Si l'argument test est false, alors le tableau est vide
	var tableau=(test)?['un','deux']:[];
 
	// Retourne les données du tableau ou false s'il est vide
	return (tableau.length>0) ? tableau : false;
}
 
alert( retournerTableau(false) );	// Retourne False
alert( retournerTableau(true ) );	// Retourne les données du tableau
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/07/2011, 10h02   #3
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par bilou_2007 Voir le message
Dans le deuxieme cas, ma fonction retourne quoi au juste? est ce qu'elle retourne ceci [] ? logiquement oui, donc :
alert( retournerTableau()===[]);
Cette alert doit m'afficher true, hélas ca n'est pas le cas,elle m'affiche false tout le temps.
+1 pour la solution d'Eric, mais montre-nous ton code si tu as du mal à adapter sa proposition
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h12   #4
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
c'est vrai qu'un petit contexte...
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h13   #5
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par javatwister Voir le message
c'est vrai qu'un petit contexte...
Oui Comme on dit : « Abondance de bliens ne nuit pas. »

__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h17   #6
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
fourni un résultat surprenant
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/07/2011, 10h17   #7
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
certes

et tant va la cruche à l'eau qu'à la fin il n'y a plus d'eau;
(et toutes ces sortes de choses)
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h32   #8
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
Eh oui, Bov!

(voir la signature de Watilin)

(ceci est une parenthèse) ==> incroyable, non?

bref, vous aviez déjà remarqué qu'on pouvait évaluer le type d'une variable non déclarée?

Code :
alert(typeof(variable_de_la_mort));
renvoie gentiment undefined sans générer d'erreur

(parentèse finale)
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h37   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Dans le cas de NaN, cela me semble logique étant donné sa nature particulière (une représentation numérique d'une valeur non numérique), mais pour les tableaux, c'est plus surprenant, d'autant que
Code :
1
2
3
4
var a = [1,2];
var b = [1,2];
alert(a==b);
alert([1,2]==[1,2]);
donne le même résultat
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h37   #10
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
mais franchement, Bilou,
Code :
alert( retournerTableau()===[]);
n'est pas clair du tout pour javascript;
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h39   #11
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par Bovino Voir le message
fourni un résultat surprenant
ok là c'est bon je change de métier
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h43   #12
Nouveau Membre du Club
 
Homme
Inscription : février 2007
Messages : 94
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2007
Messages : 94
Points : 32
Points : 32
Merci pour vos réponses.
La réponse de Eric2a n'a pas résolu le problème. Le code est simple en fait, une fonction qui traite un tableau (que j'appellerai "tab") et le renvoie à la fin "return tab;", c'est aussi simple que ça. Mon but est que cette comparaison retourne true alert(retournerTableau()===[]) dans la mesure où la fonction retourne un tableau vide (ça peut arriver que la fonction contourne le traitement et renvoie le tableau tel quel jsute après sa création "var tab = [];" ).
J'ai même essayé en faisant "return [];", et pourtant le résultat de alert(retournerTableau()===[]); était false, vraiment étonnant .
bilou_2007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 10h47   #13
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
quel bonheur d'avoir enfin ton code sous les yeux
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/07/2011, 10h56   #14
Membre régulier
 
Inscription : octobre 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 65
Points : 87
Points : 87
Citation:
Envoyé par Bovino Voir le message
Dans le cas de NaN, cela me semble logique étant donné sa nature particulière (une représentation numérique d'une valeur non numérique), mais pour les tableaux, c'est plus surprenant, d'autant que
Code :
1
2
3
4
var a = [1,2];
var b = [1,2];
alert(a==b);
alert([1,2]==[1,2]);
donne le même résultat
En quoi es ce si surprenant ? [] est bien équivalant a new Array();

Vous comparez des références différentes c’est donc normal que cela retourne faux a chaque fois ! non ?
p3ga5e est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 11h02   #15
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
Citation:
Envoyé par p3ga5e Voir le message
En quoi es ce si surprenant ? [] est bien équivalant a new Array();

Vous comparez des références différentes c’est donc normal que cela retourne faux a chaque fois ! non ?
je suis plutôt d'accord, dans ce cas on compare bien les références, les adresses en fait, mais pas les contenus.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 11h09   #16
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par NoSmoking Voir le message
je suis plutôt d'accord, dans ce cas on compare bien les références, les adresses en fait, mais pas les contenus.
Ben... pour une comparaison de références d'accord ^^
Code :
1
2
3
var a = [];
var b = [];
alert(a == b);// affiche false, d'accord avec ça
mais là on compare des littéraux...
Code :
alert([1,2]==[1,2]);// affiche false ?!
Et à part ça :
Citation:
Envoyé par javatwister
quel bonheur d'avoir enfin ton code sous les yeux
+1
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 11h13   #17
Nouveau Membre du Club
 
Homme
Inscription : février 2007
Messages : 94
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2007
Messages : 94
Points : 32
Points : 32
Citation:
Envoyé par javatwister Voir le message
quel bonheur d'avoir enfin ton code sous les yeux
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
<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
<script type="text/javascript">
function retournerTableau(nbreCases)
{
	//création d'un tableau vide
	var tableau = [];
	//si le nombre de cases est non nul
	if(nbreCases)
	{
		var i;		
		for(i=0;i<nbreCases;i++)
		{
			tableau.push(Math.ceil(Math.random()*10));
		}
		//dans l'ordre numérique croissant
		tableau.sort(function(a,b){return a-b;});
	}
	return tableau;
}
//ça affiche false :(
alert(retournerTableau(0) === []);
</script>
</body>
</html>
Voilà l'essentiel du code, je dois absolument faire alert(retournerTableau(0) === []); afficher true.
bilou_2007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 11h14   #18
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
Citation:
Envoyé par RomainVALERI Voir le message
mais là on compare des littéraux...
Code :
alert([1,2]==[1,2]);// affiche false ?!
le fait d'écrire [1,2] est une déclaration de tableau avant tout, donc normal !
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 11h15   #19
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
Envoyé par p3ga5e
[] est bien équivalant a new Array();
Non, pas tout à fait :
Code :
1
2
3
4
5
function Array(){
alert(this);
}
var a = [];
var b = new Array();


Ceci dit, un petit test :
Code :
1
2
3
4
5
6
7
var a = new String('toto');
var b = new String('toto');
var c = 'toto';
var d = 'toto';
alert(a == b);
alert(c == d);
alert(a == c);
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 11h27   #20
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
je ne comprends toujours pas la nécessité de renvoyer un tableau vide; bref, de créer un tableau si nbreCases est nul;
javatwister 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 +2. Il est actuellement 07h09.


 
 
 
 
Partenaires

Hébergement Web