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 :

Erreur dans un array


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut Erreur dans un array
    Bonjour à tous,
    j'essaye de construire un array multidimensionnel.
    C'est pas très compliqué
    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
     
    MarkerDetails = { 
    	details : function(){
    		var detail = new Array(3);
    		detail[0][0] = 'me';
    		detail[0][1] = 'img/iconGoogleMap/';
    		detail[0][2] = 'phone.png';
    		detail[1][0] = 'Pets';
    		detail[1][1] = 'img/iconGoogleMap/';
    		detail[1][2] = 'pet.png';
    		detail[2][0] = 'Child';
    		detail[2][1] = 'img/iconGoogleMap/';
    		detail[2][1] = 'child.png';
    		detail[3][0] = 'disability';
    		detail[3][1] = 'img/iconGoogleMap/';
    		detail[3][2] = 'disability.png';
    		detail[4][0] = 'car';
    		detail[4][1] = 'img/iconGoogleMap/';
    		detail[4][2] = 'car.png';
    		detail[5][0] = 'Cycle';
    		detail[5][1] = 'img/iconGoogleMap/';
    		detail[5][2] = 'cycling.png';
    		return detail;
    	}
    }

    Je n'arrive pas à comprendre pourquoi j'ai toujours le message
    "can't convert undefined to objet. Mon array est mal déclaré??

    Bonnes fêtes

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Mon array est mal déclarée??
    Pour le moins

    Mais c'est le même problème que pour ta précédente question...
    Tant que tu ne définis pas une valeur comme un tableau, celle-ci n'est pas considérée comme un tableau !
    Donc detail[0] n'étant pas un tableau déclaré, detail[0][0] n'a pas de sens.

    En plus, tu déclares que ton tableau contiendra trois éléments (var detail = new Array(3);) mais au final, il en a cinq... Tu manques de logique
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    ha d'accord, mais alors je ne comprends comme même pas un truc,
    je l'ai bien detail comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var detail = new Array(5);
    (J'ai changé avec 5, et ca ne change pas).
    Ci-dessus, n'ai je pas déclaré detail?

    J'ai aussi essayé ceci, mais sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var detail = new Array(5,3);

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Ne serait-il pas ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var detail = new Array(6);
     
    		for (var i = 0; i < 6; i++) {
    			detail[i] = new Array(3);
    			for (var j = 0; j < 3; j++) {
    				detail[i][j] = '';
    			}
    		}
    en fait j'en ai pas 5 mais 6, n'est-ce pas (de 0 à 5)

  5. #5
    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,
    pas forcément une bonne idée que de déclarer les Array de cette façon à preuve l'ambiguïté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var tableau = new Array(3);    // init d'un tableau de 3 éléments
    var tableau = new Array(5, 3); // init d'un tableau de 2 éléments, 5 et 3
    donc si tu veux initialiser un tableau avec 1 élément valant 5 par exemple cela devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var tableau = new Array(1);
    tableau[0] = 5;
    avec la notation [] cela a au moins le mérite d'être toujours plus limpide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var tableau = [5];    // init d'un tableau de 1 élément valant 5
    var tableau = [5, 3]; // init d'un tableau de 2 éléments, 5 et 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var detail = [];
    var i, nb_1 = 6,
        j, nb_2 = 3;
    for( i = 0; i < nb_1; i++) {
      detail[i] = [];
      for( j = 0; j < nb_2; j++) {
        detail[i][j] = i;
      }
    }

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Aussi ne pas oublier qu'on peut mettre des hashmap dans des arrays dans des hashmaps dans des arrays en Javascript Une array c'est bien quand tu dois gérer une liste d'élements sans en savoir le nombre ; pour le reste autant prendre une hashmap. Donc dans ton cas je ferais :

    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
    22
    23
    24
    25
     
    MarkerDetails = { 
    	details : [
    		{
    			id: "me",
    			icon: "img/iconGoogleMap/",
    			img: "phone.png"
    		},
    		{
    			id: "Pets",
    			icon: "img/iconGoogleMap/",
    			img: "pet.png"
    		},
    		{
    			id: "Child",
    			icon: "img/iconGoogleMap/",
    			img: "child.png"
    		},
    		{
    			id: "Cycle",
    			icon: "img/iconGoogleMap/",
    			img: "cycling.png"
    		}		
    	]
    };
    Sans connaitre le détail de ton application, je trouve ça plus clair en l'état.

Discussions similaires

  1. [Tomcat] configuration d'une page d'erreur dans web.xml
    Par Super Castor dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 08/04/2009, 15h58
  2. Réponses: 7
    Dernier message: 29/08/2008, 15h27
  3. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  4. [Erreur dans la lib...]
    Par Gonath dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/12/2003, 09h02
  5. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 21h39

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