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 :

fonction : mettre en paramètre une propriété d'un objet


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut fonction : mettre en paramètre une propriété d'un objet
    Bonjour,
    je voudrais mettre en paramètre d'une fonction la propriété d'un objet est il possible ?
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tempsSimples(parametre) {
            let resultat;
            if(this.verbe ==='essere'){
                resultat = this.essere.parametre
            } else if (this.verbe ==="avoir") {
              resultat = this.avoir.parametre;
            }
            return resultat;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tempsSimples(indicatif.present)
    je voudrais obtenir en retour par ex. si j'ai la condition 'essere' : verbe.etre.indicatif.present
    J'ai essayé aussi avec de creer deux variable puis une concatenation avec au milieu "." mais echec
    merci pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2020
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 35
    Par défaut
    Bonjour,

    Si "indicatif" est un nom de propriété, vous pourriez peut-être tenter quelque chose comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // classe machin
    tempsAPeinePlusSimples(mode, temps) {
        return this[this.verbe][mode][temps];
    }
     
    // à appeler comme ceci:
    const test = maConjugaison.tempsAPeinePlusSimples("indicatif", "present");
    Mais je suis peut-être à côté de la plaque?

  3. #3
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut
    bonsoir,
    je pense que je me suis mal expliqué et mes termes ne sont pas exactes "indicatif" et "present" ne sont pas des propriétés mais les clefs de mon JSON(j'espere que je ne me trompe pas encore de termes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     let verbeEtre ={
        "indicatif": {
          "present": [
            "sono",
            "sei",
            "é",
            "siamo",
            "siete",
            "sono"
          ] etc.
    puis let verbeAvoir =... , la meme chose mais la conjugaison change

    mon constructeur de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        constructor(verbe) {
            this.verbe = verbe;
        }
    je crée mon objet : let verbe =new Maclasse(...),
    Pour atteindre le présent :verbe.etre.indicatif.present[i]
    Dans ma classe je voudrais créer une fonction avec une condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tempsSimples(parametre) {
            let resultat;
            if(this.verbe ==='essere'){
                resultat = this.essere.parametre
            } else if (this.verbe ==="avoir") {
              resultat = this.avoir.parametre;
            }
            return resultat;
        }
    :
    je voudrais qu'avec cette condition on bascule d'un verbe à l'autre (verbe.avoir ou verbe.etre) et que je puisse mettre comme argument de la fonction tempsSimples(indicatif.present) et à la fin cela fasse verbe.etre.indicatif.present
    Merci et désolé pour mes explication trop longues et imprécises sur termes techniques.
    Bon W.E.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Matteo53 Voir le message
    je pense que je me suis mal expliqué et mes termes ne sont pas exactes "indicatif" et "present" ne sont pas des propriétés mais les clefs de mon JSON(j'espere que je ne me trompe pas encore de termes)
    En fait ce n'est pas un JSON : si on écrit let verbeEtre ={...} alors verbeEtre est un objet et cela doit se trouver dans un fichier .js.

    Citation Envoyé par Matteo53 Voir le message
    je voudrais qu'avec cette condition on bascule d'un verbe à l'autre (verbe.avoir ou verbe.etre) et que je puisse mettre comme argument de la fonction tempsSimples(indicatif.present) et à la fin cela fasse verbe.etre.indicatif.present
    Si on utilise cette syntaxe : verbe.avoir / verbe.etre cela suppose que verbe soit un objet ayant avoir et etre comme propriété.

    Mais si on a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let verbeEtre ={
        "indicatif": {
          "present": [
            "sono",
            "sei",
            "é",
            "siamo",
            "siete",
            "sono"
          ] etc.
    Alors pour accéder à la conjugaison du verbe etre au present de l'indicatif il faudrait écrire : verbeEtre.indicatif.present et non verbe.etre.indicatif.present.



    Citation Envoyé par Matteo53 Voir le message
    Dans ma classe je voudrais créer une fonction avec une condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tempsSimples(parametre) {
            let resultat;
            if(this.verbe ==='essere'){
                resultat = this.essere.parametre
            } else if (this.verbe ==="avoir") {
              resultat = this.avoir.parametre;
            }
            return resultat;
        }
    Si verbeEtre et verbeAvoir sont des propriétés de la classe alors on peut utiliser l'idée de houd.ini et modifier la fonction comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tempsSimples(mode, temps) {
        let resultat;
        if(this.verbe ==='essere'){
            resultat = this.verbeEtre[mode][temps]
        } else if (this.verbe ==="avoir") {
          resultat = this.verbeAvoir[mode][temps];
        }
        return resultat;
    }
    Et pour obtenir la conjugaison du verbe etre au present de l'indicatif on écrit : tempsSimples("indicatif", "present") et si on veut stocker le résultat dans (par exemple) la variable verbe_etre_indicatif_present on écrit : let verbe_etre_indicatif_present = tempsSimples("indicatif", "present").


    C'est plus polyvalent de faire comme cela : on peut du coup utiliser la même fonction pour tous les modes et temps.

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    C'est plus polyvalent de faire comme cela : on peut du coup utiliser la même fonction pour tous les modes et temps.
    On pourrait même faire quelque chose de plus général encore avec une fonction conjugue(verbe, mode, temps) :

    Et on pourrait même se passer des class, des modules, de fetch... (on utilise des variables globales)

    auxiliaires.html

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <!DOCTYPE html>
    <html lang="fr">
      <head>
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Verbi prima categoria</title>  
     
          <script src="data.js"></script>
          <script src="auxiliaires.js"></script>
        </head>
      <body>
     
     
      </body>
      </html>

    data.js

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    let conjugaisons = {
      "etre": {
        "indicatif": {
          "present": ['sono', 'sei', 'é', 'siamo', 'siete', 'sono'],
          "imparfait": ['ero', 'eri', 'era', 'eravamo', 'eravate', 'erano'],
          "passeSimple": ['fui', 'fosti', 'fu', 'fummo', 'foste', 'furono'],
          "futurSimple": ['sarò', 'sarai', 'sarà', 'saremo', 'sarete', 'saranno']
        },
        "conditionnel": {
          "present": ['sarei', 'saresti', 'sarebbe', 'saremmo', 'sareste', 'sarebbero']
        },
        // ... etc
      },
     
      "avoir": {
        "indicatif": {
          "present": ['ho', 'hai', 'ha', 'abbiamo', 'avete', 'hanno'],
          "imparfait": ['avevo', 'avevi', 'aveva', 'avevamo', 'avevate', 'avevano'],
          "passeSimple": ['ebbi', 'avesti', 'ebbe', 'avemmo', 'aveste', 'ebbero'],
          "futurSimple": ['avrò', 'avrai', 'avrà', 'avremo', 'avrete', 'avranno']
        },
        "conditionnel": {
          "present": ['avrei', 'avresti', 'avrebbe', 'avremmo', 'avreste', 'avrebbero']
        },
        // ... etc
      }
    }


    auxiliaires.js

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    // La fonction générale qui utilise l'objet 'conjugaisons'  (variable globale)
    // contenu dans le fichiers data.js
    function conjugue(verbe, mode, temps) {
        return conjugaisons[verbe][mode][temps]
    }
     
     
    // Exemples d'usage de la fonction :
     
    // verbe etre au présent de l'indicatif : 
    let verbe_etre_indicatif_present = conjugue("etre", "indicatif", "present")
    console.log("verbe etre au present de l'indicatif :\n", verbe_etre_indicatif_present);
     
    // verbe etre à l'imparfait de l'indicatif : 
    let verbe_etre_indicatif_imparfait = conjugue("etre", "indicatif", "imparfait")
    console.log("verbe etre à l'imparfait de l'indicatif :\n", verbe_etre_indicatif_imparfait);
     
     
    // verbe avoir au présent de l'indicatif : 
    let verbe_avoir_indicatif_present = conjugue("avoir", "indicatif", "present")
    console.log("verbe avoir au present de l'indicatif :\n", verbe_avoir_indicatif_present);
     
    // verbe avoir à l'imparfait de l'indicatif : 
    let verbe_avoir_indicatif_imparfait = conjugue("avoir", "indicatif", "imparfait")
    console.log("verbe avoir à l'imparfait de l'indicatif :\n", verbe_avoir_indicatif_imparfait);

    On obtient ce résultat :

    Nom : res.PNG
Affichages : 205
Taille : 11,8 Ko

  6. #6
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut
    ah oui merci pour vos explications détaillés. Concernant ma première question je n'avais pas pensé que je pouvais utiliser comme accesseur [] au lieu de . et mettre les paramètres à l'intérieur de []. J'ai essayé et cela marche..
    Je voudrais aussi vous remercier pour le conseil de créer une variable globale pour simplifier le code.
    Vraiment merci c'est des conseils précieux pour avancer et apprendre.
    bon w.e.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2011, 20h12
  2. Mettre en paramètre d'une fonction une interface, méthode etc.
    Par Leniouns dans le forum Général Java
    Réponses: 22
    Dernier message: 15/12/2011, 07h57
  3. Mettre les paramètres d'une fonction js en chaine de caractères
    Par bouzakher dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 25/08/2009, 15h31
  4. Réponses: 13
    Dernier message: 29/07/2009, 20h25
  5. [VBA] Envoyer un listBox en paramètre à une fonction
    Par kissmytoe dans le forum Access
    Réponses: 8
    Dernier message: 13/03/2006, 20h28

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