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 :

Accéder à un tableau dans un objet


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Accéder à un tableau dans un objet
    Bonjour,
    J'ai le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const	
    	weekDays = {
    	'en': ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
    	'fr': ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
    	'de': ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']
    	};
     
    	console.log(langue);	// = 'fr'
    	console.log(jour);	// = 3
    	var		strJour	= weekDays.langue[jour];		undefined
    	var		strJour	= weekDays.langue.value[jour];		undefined
    Les deux dernières lignes me renvoient undefined. Si je remplace langue par en ou fr sans guillemets ou apostrophes, j'obtiens la valeur voulue. Comment accéder au mercredi?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    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,
    weekDays.langue[jour]
    Ce que tu fournis comme code est incomplet, donc avec ce que l'on a, langue n'étant pas une clé de ton objet weekDays, tu ne peux pas !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Merci à tous les deux. Vos deux explications m'ont été utiles.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    J'ai modifié mon code en vue d'une simplification plus loin dans le code:
    Code : 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
    const lang='fr';	// transmis depuis PHP
    const
    	en = {
    		weekDays:	['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
    		,monthes:	['January','February','March','April','May','June','July','August','September','October','November','December']
    		,week:		'Week'
    	},
    	fr = {
    		weekDays:	['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']
    		,monthes:	['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre']
    		,week:		'Semaine'
    	},
    	de = {
    		weekDays:	['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']
    		,monthes:	['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']
    		,week:		'KW'
    	};
    Maintenant, je veux extraire les seuls paramètres de langue qui m'intéressent avec quelque chose du genre const param = lang;. J'ai trouvé une solution mais elle est plutôt lourde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    switch(lang)
    {
    	case 'en':
    		var params = Object.assign({}, en);
    	break;
    	case 'fr':
    		var params = Object.assign({}, fr);
    	break;
    	case 'de':
    		var params = Object.assign({}, de);
    	break;
    	default:
    		var params = Object.assign({}, fr);
    	break;
    }

  6. #6
    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
    Une autre solution peut-être moins lourde :
    Code : 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
    const lang = "en";  // transmis depuis PHP
    const countryLabels = {
      "en": {
        weekDays: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
        ,months: ['January','February','March','April','May','June','July','August','September','October','November','December']
        ,week:    'Week'
      },
      "fr": {
        weekDays: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']
        ,months: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre']
        ,week:    'Semaine'
      },
      "de": {
        weekDays: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']
        ,months: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']
        ,week:    'Woche'
      }
    }
    const labelDate = countryLabels[lang];
    // on utilise labelDate
    console.log(labelDate);

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Merci. Ta solution a le gros mérite de favoriser l'ajout d'autres langues sans retoucher la suite du code.
    Entre temps j'avais trouvé une autre solution qui revient au même en décomposant la définition de l'objet:
    Code : 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
    const lang='fr';	// transmis depuis PHP
    const
    	en = {
    		weekDays:	['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
    		,monthes:	['January','February','March','April','May','June','July','August','September','October','November','December']
    		,week:		'Week'
    	},
    	fr = {
    		weekDays:	['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']
    		,monthes:	['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre']
    		,week:		'Semaine'
    	},
    	de = {
    		weekDays:	['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']
    		,monthes:	['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']
    		,week:		'KW'
    	};
    const 	data = {en, fr, de};	// NE PAS OUBLIER D AJOUTER LES NOUVELLES LANGUES ICI
    Cette dernière solution a l'avantage de décomposer le code mais l'inconvénient d'avoir encore une ligne à retoucher en cas d'ajout.

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

Discussions similaires

  1. Accéder à un élément tableau dans un objet
    Par comme de bien entendu dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/07/2021, 21h54
  2. accéder à une variable dans un objet dans un tableau
    Par eprevot dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2013, 08h53
  3. Tableau dans un objet
    Par sokai dans le forum C#
    Réponses: 0
    Dernier message: 30/10/2008, 10h54
  4. Accès à un tableau dans un objet.
    Par psic dans le forum Langage
    Réponses: 9
    Dernier message: 28/08/2008, 14h30
  5. Accéder à un tableau dans une fonction
    Par valanagrid dans le forum C++
    Réponses: 10
    Dernier message: 18/09/2006, 16h08

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