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 :

Boucle for orientée objet


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut Boucle for orientée objet
    Bonsoir tout le monde.
    Je suis débutant en javascript et j'ai besoin de votre aide pour comprendre pourquoi un code ne marche pas.
    Ce premier code marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var p="";
    var identite={
    	nom:"Bidou",
    	prenom:"Nanou",
    	age:23
    };
    for(var elem in identite){
    	p+=identite[elem] +"\n";
    }
    alert(p);
    J'ai comme résultat:
    Bidou
    Nanou
    23
    Avec le code suivant, j'attends au même résultat, mais non, je n'ai rien comme comme affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var identite={
    	nom:"Bidou",
    	prenom:"Nanou",
    	age:23
    };
    alert(identite[nom] +"\n"+identite[prenom] +"\n"+identite[age] +"\n");
    Pourquoi?
    Merci

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 651
    Par défaut
    avez-vous vu l'erreur dans la console de développement ?

  3. #3
    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
    Salut,

    J'ai suivi le conseil de Mathieu car cela m’intéressait de savoir pourquoi ça marche pas...

    Il nous dit : Uncaught ReferenceError: nom is not defined...

    Et voilà ce que je comprends : quand on écrit : identite[nom] alors "nom" est considérée comme une variable or celle-ci n'est définie nulle part (cette variable est "undefined") ! Si on met juste avant : var nom = "nom"; cela marche mais pour accéder à la propriété "nom" de l'objet "identite" on peut directement écrire identite["nom"] et ça marche mais là on nous dit qu'il est préférable d'utiliser la notation avec le point : identite.nom...

  4. #4
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 392
    Par défaut
    Puisque vous demandez votre "langue au chat":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var identite={
    	nom:"Bidou",
    	prenom:"Nanou",
    	age:23
    };
    alert(identite['nom'] +"\n"+identite['prenom'] +"\n"+identite['age'] +"\n");

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 502
    Par défaut
    ou bien tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var identite={
    	nom:"Bidou",
    	prenom:"Nanou",
    	age:23
    };
    alert(identite.nom +"\n"+identite.prenom +"\n"+identite.age +"\n");

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    [...] Et voilà ce que je comprends : quand on écrit : identite[nom] alors "nom" est considérée comme une variable or celle-ci n'est définie nulle part (cette variable est "undefined") ! Si on met juste avant : var nom = "nom"; cela marche mais pour accéder à la propriété "nom" de l'objet "identite" on peut directement écrire identite["nom"] et ça marche mais là on nous dit qu'il est préférable d'utiliser la notation avec le point : identite.nom...
    C'est toujours du texte. C'est seulement lorsque la clé est formée d'un seul mot que l'on peut omettre les guillemets et utiliser la notation "objet.clef"

    Exemple :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let identite = {
    	"nom de l'écrivain" : "Bidou",
    	"prénom de l'éditeur" : "Nanou",
    	"âge du concierge" : 23
    };
     
    // debug, console, touche F12
    console.log( identite[ "nom de l'écrivain" ], identite[ "prénom de l'éditeur" ], identite[ "âge du concierge" ] );

    C'est par facilité que l'on utilise le francais sans accents ou l'anglais et que l'on regroupe les mots composés en utilisant le "camelCase".

    Exemple :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let identite = {
    	nomEcrivain : "Bidou",
    	prenomEditeur : "Nanou",
    	ageConcierge : 23
    };
     
    console.log( identite.nomEcrivain, identite.prenomEditeur, identite.ageConcierge );

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  7. #7
    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 danielhagnoul Voir le message
    C'est toujours du texte. C'est seulement lorsque la clé est formée d'un seul mot que l'on peut omettre les guillemets et utiliser la notation "objet.clef"
    Merci et +1 !

    Si j'ai bien compris, j'en déduis que si on veut que la clé soit formée de plus d'un mot il faut utilisé les guillemets, c'est bien ça ?

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    ...on veut que la clé soit formée de plus d'un mot il faut utilisé les guillemets, c'est bien ça ?
    oui mais à mon sens cette technique est une mauvaise approche et comme l'a dit danielhagnoul utilise le « camelCase ».

    La notation objet["propriete"] est néanmoins préférable si malheureusement on utilise une propriété faisant partie des mots réservés, même si les navigateurs modernes arrivent à faire la différence.

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

Discussions similaires

  1. Problème avec boucle "for each" :objet requis
    Par maroonx dans le forum Macros et VBA Excel
    Réponses: 37
    Dernier message: 15/05/2016, 11h41
  2. [2.x] Twig, boucle for imbriquées et accès aux variables et objets
    Par cid007300 dans le forum Symfony
    Réponses: 1
    Dernier message: 12/03/2014, 08h59
  3. Supprimer plusieurs objet en une et une seule boucle for
    Par Beber_lechat dans le forum Langage
    Réponses: 5
    Dernier message: 23/09/2010, 09h44
  4. [POO] parcourir un objet json avec une boucle for in
    Par bucheron007 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 19/01/2009, 12h55
  5. Création d'objets dans une boucle for
    Par urban_p dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/06/2008, 10h34

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