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 :

Correspondance des paramètres d'une fonction.


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 168
    Par défaut Correspondance des paramètres d'une fonction.
    Bonjour,

    Je n'arrive pas à comprendre comment fonctionne ce petit code, apparemment tout simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var liste = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
     
    // Création d'objet temporaire qui contient les positions
    // et les valeurs en minuscules
    var mapped = liste.map(function(e, i) {
      return { index: i, value: e.toLowerCase() };
    });
    console.log(mapped)
    Cela donne:
    [ { index: 0, value: 'delta' },
    { index: 1, value: 'alpha' },
    { index: 2, value: 'charlie' },
    { index: 3, value: 'bravo' } ]
    Comment la machine sait que dans la clef "index: i", "i" correspond à l'index de chaque élément du tableau et dans la valeur "value: e.toLowerCase()", "e" correspond à la valeur de chaque élément du tabeau ?
    Dans le code, le mot "index" est juste du text. Si j'écris "toto" à la place ça fonctionne. Même chose avec "value".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var liste = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
     
    // Création d'objet temporaire qui contient les positions
    // et les valeurs en minuscules
    var mapped = liste.map(function(e, i) {
      return { toto: i, tata: e.toLowerCase() };
    });
    console.log(mapped)
    Ca donne :
    [ { toto: 0, tata: 'delta' },
    { toto: 1, tata: 'alpha' },
    { toto: 2, tata: 'charlie' },
    { toto: 3, tata: 'bravo' } ]
    En revanche si j'inverse "i" et "e" ça fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var liste = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
     
    // Création d'objet temporaire qui contient les positions
    // et les valeurs en minuscules
    var mapped = liste.map(function(e, i) {
      return { index: e, value: i.toLowerCase() };
    });
    console.log(mapped)
    Ça me donne:
    TypeError: i.toLowerCase is not a function
    Je sais que pour { index: e, value: i.toLowerCase() } ce qui est à droite correspond forcément à la valeur mais alors pourquoi cela fonctionne pas avec i.toLowerCase() ?

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 657
    Par défaut
    il faut regarder ce qu'il y a indiqué dans function (e, i). c'est à cet endroit qu'il est défini que à chaque boucle, l'élément de la liste est dans la 1re variable "e" et l'index est dans la 2e variable "i";
    ensuite dans la fonction vous pouvez faire ce que vous voulez de ces 2 variables.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 168
    Par défaut
    Je suis en train de suivre les cours de freeCodeCamp et je ne vois pas quel cours traite ce genre d'exemple. pour moi tout ça reste un mystère. auriez vous un cours qui pourrais m'aider à comprendre ?

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    l'explication est ici :


    Description
    [...]
    callback est appelée avec trois arguments : [B]la valeur de l'élément du tableau, l'index de cet élément et l'objet Array qui est parcouru.
    C'est donc une convention.

    Ici, on pourrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var mapped = liste.map(function(the_value, the_index, the_array ) {
      console.log( 'pour l\'index '+the_index+', la valeur est '+the_value+' dans le tableau ['+the_array+']');
    });

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 168
    Par défaut
    Thank you

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/11/2008, 10h55
  2. Réponses: 2
    Dernier message: 28/04/2008, 20h04
  3. Réponses: 3
    Dernier message: 16/05/2007, 10h03
  4. Réponses: 3
    Dernier message: 14/05/2007, 15h24
  5. Evaluations des paramètres d'une fonction
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 06/10/2005, 09h46

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