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 :

Tableau Associatif Objet Array()


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut Tableau Associatif Objet Array()
    Bonjour,

    Je fais un tableau associatif avec mon Tableau objet Array()
    Le probleme est lorsque je fais un MonTableau.length il me retourne zero alors que le tableau contient des données. Suis je obligé de faire un For in avec un compteur ??

    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Bonjour,

    Il me semble que le "for in" est la seule solution pour obtenir la taille d'un tableau associatif en javascript.

    A+

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    tu dois surement avoir un objet de type object et non array

    fait un alert(typeof tontableau);

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    Oui c'est cas bien sur vue que MonTableau = new Array()
    Mais comment je fais pour avoir sa taille ? si MonTableau.length = 0 alors qu'il contient des lignes ?

  5. #5
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    sujet déja traité il faut en effet passer par une boucle for each et tester hasOwnProperty puis incrémenter un compteur

    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
    <script type='text/javascript'>
    Array.prototype.MyLength=ArrayLength
     
    function ArrayLength(){
    var lg=0;
    			for (ind in this){
    			                  if(this.hasOwnProperty(ind)){	 
    			                     lg++}
    								}
    			return lg;}
     
    var tabAssDom= new Array() 
    tabAssDom[30] = "abc"
    tabAssDom[25] = "dbc"
    tabAssDom[15] = "dbc"
     
    var a=tabAssDom.MyLength()
    alert (a)
    </script>

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    il s'agit en fait d'un hash et non pas d'un array a proprement parler, donc seule façon : parcourir la collection ...

    astuce par contre pour savoir si un élément se trouve dans ton tableau :
    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
     
    			function retourTableau(){
     var MonTableau = new Array()
    MonTableau['Lundi'] = 'Travail';
    MonTableau['Mardi'] = 'Sport';
    MonTableau['Mercredi'] = 'Voyage';
    return MonTableau;
    }
     
    		var TabASSo = retourTableau();
    		alert(TabASSo["Lundi"]);
     
    	if ("Lundi" in TabASSo) // returns true or false
    	{
    		alert('true');
    	}

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    Merci beaucoup pour la réponse et l'astuce !!!

    see you soon =)

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

Discussions similaires

  1. [Smarty] objet foreach: accès tableau associatif imbriqué
    Par noobC dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/11/2009, 12h48
  2. Réponses: 4
    Dernier message: 21/01/2009, 14h45
  3. [SOAP] tableau associatif --> tableau d'objets
    Par mickael.guilbert dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/01/2008, 18h05
  4. [Tableaux] Tableau associatif avec des array
    Par Piccolo_son dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2007, 08h23
  5. [D7] Tableau associatif (hash, associative array)?
    Par fredtheman dans le forum Delphi
    Réponses: 3
    Dernier message: 21/06/2006, 18h42

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