IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

JavaScript Discussion :

Array() directement défini dans l'appel d'une fonction


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Array() directement défini dans l'appel d'une fonction
    Hello !

    Je me fait ma propre petite librairie pour pouvoir utiliser AJAX plus facilement, et j'ai un problème très énervant. Je ne vais pas ici vous mettre le code que je veux utiliser réellement, qui est long à lire, mais un exemple

    Imaginons une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	function bla(arg1,arg2){
    		alert(arg1);
    		for (i in arg2){
    			alert(i +" = "+arg2[i]);
    		}
    	}
    Un appel classique serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	var my_arr = new Array();
     
    	my_arr["a"]=250;
    	my_arr["b"]=1000;
     
    	bla("test",my_arr);
    Qui afficherait :
    test
    a = 250
    b = 1000

    Mon problème, c'est que je veux définir l'Array directement dans l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bla("test",Array(?????));
    Que mettre à la place des ????? ?

    J'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array({"a":250},{"b":1000})
    Mais ça me renvoie des [OBJECT].

    Il me faut absolument le tout en une seule ligne de code... Pouvez-vous m'aider ?

    Merci !

  2. #2
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Tout d'abord sache qu'en javascript un array est tableau numéro de 0 à n .... si tu fais array['un_mot_ou_lettre'], tu accèderas une propriété de l'objet array, car la classe array hérite de la classe objet.

    Mais cette propriété ne sera pas considéré comme un élément du tableau. (pas de pop, slice, etc... n'agiras pas sur la length)... donc autant ne pas utiliser d'array.

    Maintenant pour répondre à ta question tu peux déclarer un array (ou un objet) sous sa forme littérale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bla("test",[250,1000]); // array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bla("test",{a:250,b;1000}); // object

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Hello

    Tout d'abord, merci pour ta réponse

    Il y a cependant quelque chose que je ne comprends pas.

    Quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	var my_arr = new Array();
     
    	my_arr["a"]=250;
    	my_arr["b"]=1000;
     
    	bla("test",my_arr);
    Il m'affiche bien :

    test
    a = 250
    b = 1000

    Si dans ce cas, mon tableau n'est pas considéré comme un objet, pourquoi l'est-il quand je le défini directement dans l'appel de la fonction ?

    Si il peut être défini en-dehors sans être considéré comme un Object, pourquoi cela n'est-il pas possible dedans ?!




    Si ce n'est réellement pas possible, pourrait-on m'expliquer comme faire, avec un objet, pour récupérer mon "a", mon "b" et les valeurs qui correspondent si j'écris mon appel comme suggéré, et ce en une boucle de type "for" comme dans ma fonction bla() ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bla("test",{"a":250,"b":1000});


    Merci !

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Hello,

    L'affichage se fait bien, parce que tu utilises ton array comme un objet, aussi bien pour le remplir que pour le parcourir :

    un array est un array et un objet.

    un objet n'est qu'un objet.


    pour parcourir les éléments d'un array tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i=0;i<array.length;i++)
        array[i];
    (ou utiliser la méthode(prototype) forEach )

    pour parcourir les propriétés et méthodes d'un objet (non prototype) tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i in objet)
        objet[i];

    les propriété de l'objet peuvent être composé de chiffres et de lettres (il est déconseillé de commencer le nom par un chiffre)

    les éléments de l'array doivent être des entiers.

    si tu tentes d'accèder à un élément ainsi :

    si l'indice a une valeur entière, tu accèderas a l'élément de l'array correspondant à l'indice autrement tu accèderas à la propriété de la partie "object" de ton array correspondante.

    -----------


    Citation Envoyé par g.randaxhe Voir le message
    Si dans ce cas, mon tableau n'est pas considéré comme un objet, pourquoi l'est-il quand je le défini directement dans l'appel de la fonction ?
    Il l'est (considéré comme un objet dans ta façon de l'utiliser).

    Citation Envoyé par g.randaxhe Voir le message
    Si il peut être défini en-dehors sans être considéré comme un Object, pourquoi cela n'est-il pas possible dedans ?!
    Les 2 façons de le créer (littérale ou non) reviennent au même.

    Citation Envoyé par g.randaxhe Voir le message
    Si ce n'est réellement pas possible, pourrait-on m'expliquer comme faire, avec un objet, pour récupérer mon "a", mon "b" et les valeurs qui correspondent si j'écris mon appel comme suggéré, et ce en une boucle de type "for" comme dans ma fonction bla() ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bla("test",{"a":250,"b":1000});
    C'est possible d'ailleurs ça devrait fonctionner avec la définition de "bla" que tu nous a donné et ça devrait bien t'afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    test
    a = 250
    b = 1000

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup, non seulement j'ai ma solution, mais en plus j'ai tout compris

    Je t'en dois une

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Espace dans l'appel d'une fonction
    Par pierre50 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/12/2007, 11h19
  2. Variable en option dans l'appel d'une fonction
    Par xian21 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/11/2007, 15h13
  3. Réponses: 4
    Dernier message: 30/08/2007, 18h08
  4. [PHP-JS] Variable PHP comme argument dans l'appel d'une fonction Javascript
    Par The Molo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2007, 09h00
  5. pb dans l'appel d'une fonction
    Par badboys206s16 dans le forum ASP
    Réponses: 3
    Dernier message: 04/07/2006, 08h32

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