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 202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 202
    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 202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 202
    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. 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