Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Discussion: Erreur dans un array

  1. #1
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    Par défaut Erreur dans un array

    Bonjour à tous,
    j'essaye de construire un array multidimensionnel.
    C'est pas très compliqué
    Code javascript :
    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
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Responsable Développement Web


    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    22 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 22 416
    Points : 87 180
    Points
    87 180
    Billets dans le blog
    4

    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
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    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 :
    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 :
    var detail = new Array(5,3);
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    Par défaut

    Ne serait-il pas ca?
    Code :
    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)
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : janvier 2011
    Messages : 7 761
    Points : 14 666
    Points
    14 666

    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 :
    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 :
    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 :
    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 :
    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
    Expert Confirmé Sénior
    Avatar de SylvainPV
    Profil pro Sylvain Pollet-Villard
    Inscrit en
    novembre 2012
    Messages
    1 851
    Détails du profil
    Informations personnelles :
    Nom : Sylvain Pollet-Villard

    Informations forums :
    Inscription : novembre 2012
    Messages : 1 851
    Points : 4 387
    Points
    4 387

    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 :
    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.

  7. #7
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    Par défaut

    Hello
    Merci pour vos réponses et je vous souhaite de bonnes fêtes
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  8. #8
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    Par défaut

    Je m'excuse mais j'avoue etre un peu perdu avec les array en javascript.


    En fait j'utilise localStorage pour stoker des données sur des module.
    Et en javascript ca me semble bien plus compliquer que PHP (du moins pour moi :o))

    Ces modules on des id mais qui ne se suivent pas forcement et qui ne commence non plus pas par 0 ou 1.

    Deplus, la quantité de modules peuvent changer, si dans le cas on en efface un ou ajoute etc.

    Pour un module, il y a les information suivante
    id, iconColor, profile, pseudo, phone, mode

    j'ai besoin de créé un aray qui va extrait id, iconcolor, profile, pseudo et y ajouter coords

    En gros j'aimerais avoir ca
    Code javascript :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    var mod = new Array();
    mod['47'][profile]='profile47'
    mod['47'][pseudo]= 'pseudo47';
    mod['47'][iconColor] = 'iconIcon47';
    mod['47'][coords] = '46.34,6.00001';
     
    mod['48'][profile]='profile48'
    mod['48'][pseudo]= 'pseudo48';
    mod['48'][iconColor] = 'iconIcon48';
    mod['48'][coords] = '46.345,6.00001';
     
    mod['50'][profile]='profile50'
    mod['50'][pseudo]= 'pseudo50';
    mod['50'][iconColor] = 'iconIcon50';
    mod['50'][coords] = '46.0034,6.00001';
     
    mod['64'][profile]='profile64'
    mod['64'][pseudo]= 'pseudo64';
    mod['64'][iconColor] = 'iconIcon64';
    mod['64'][coords] = '46.34,6.40001';

    Pourcela, je sohaite stoker dans un varaible (array) modules, des valeurs extraites d'un fichier JSON dont voici un extrait
    Code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    {
    	"modules" : [
    		{
    			"id" : "47",
    			"pseudo" : "Titi",
    			"profile" : "gps",
    			"iconColor" : "3",
    			"distance" : "1",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "48",
    			"pseudo" : "Toto",
    			"profile" : "phone",
    			"iconColor" : "10",
    			"distance" : "0",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "50",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "64",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		}
    	]
    }
    Je n'arrive pas, en javascript a construire cet array dynamiquement, sans avoir des problème instencié des array multiple, sachant qu'un module peut etre supprimer par l'utilisateur...

    Milles mercis pour vos lumières
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : janvier 2011
    Messages : 7 761
    Points : 14 666
    Points
    14 666

    Par défaut

    Tu peux parcourir avec une boucle for i in objet.
    exemple à partir de tes données
    Code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    var oData =  {
    	"modules" : [
    		{
    			"id" : "47",
    			"pseudo" : "Titi",
    			"profile" : "gps",
    			"iconColor" : "3",
    			"distance" : "1",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "48",
    			"pseudo" : "Toto",
    			"profile" : "phone",
    			"iconColor" : "10",
    			"distance" : "0",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "50",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "64",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		}
    	]
    }
     
    var oSrc = oData['modules'];
    var i, j, html = '';
    for( i in oSrc){
      html +='<ol>'
      for( j in oSrc[i]){
        html += '<li>' + j +' = ' +oSrc[i][j] +'</\li>';
      }
      html +='<\/ol>'
    }
    document.write( html); // je sais c'est pas bô!!! :O))

  10. #10
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    Par défaut

    Salut noSmoking,
    Ben oui, parcourir la table c'est pas trop mon problème.
    Ce qui me préoccupe c'est construire la nouvelle table sans avoir de problème d'instanciation.
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  11. #11
    Expert Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 203
    Points : 6 909
    Points
    6 909

    Par défaut

    Citation Envoyé par pierrot10 Voir le message
    Salut noSmoking,
    Ben oui, parcourir la table c'est pas trop mon problème.
    Ce qui me préoccupe c'est construire la nouvelle table sans avoir de problème d'instanciation.
    moi ce que je comprends pas c'est pourquoi tu veux construire une COPIE de ton array il te suffit d'utiliser une référence

    lorsque tu mets tes modules dans ton localstorage tu fais un truc du genre

    Code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    window.localStorage.setItem('modules', [
    		{
    			"id" : "47",
    			"pseudo" : "Titi",
    			"profile" : "gps",
    			"iconColor" : "3",
    			"distance" : "1",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "48",
    			"pseudo" : "Toto",
    			"profile" : "phone",
    			"iconColor" : "10",
    			"distance" : "0",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "50",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		{
    			"id" : "64",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		}
    	]);
    donc pour le lire à la place de var mod = new Array(); puis l'initialisation du contenu du tableau tu fais simplement
    Code :
    var mod = window.localStorage.getItem('module');
    c'est tout.

    tu as donc accès à tes modules de la façon suivantetu peux lire http://debray-jerome.developpez.com/...rage-en-html5/


    quant à ta remarque sur php je ne comprends pas.
    en php tu fais
    Code php :
    1
    2
    3
    4
    5
    6
    7
    $mod = new Array();
    $mod[0] = new Array();
    $mod[0]['id']= 50;
    $mod[0]['pseudo'] = "Tete",
    $mod[0]['profile'] = "gps",
    $mod[0]['iconColor'] =  "5",
    $mod[0]['distance'] = "5";
    et en javascript
    Code :
    1
    2
    3
    4
    5
    6
    7
    var mod = new Array();
    mod[0] = new Array();
    mod[0]['id']= 50;
    mod[0]['pseudo'] = "Tete",
    mod[0]['profile'] = "gps",
    mod[0]['iconColor'] =  "5",
    mod[0]['distance'] = "5";
    la différence est comment dire quasi nulle.


    pour finir je crois que tu confonds tableau et hashmap en php c'est couramment le cas car les deux se déclare avec un new Array()
    je crois que ce que tu souhaites faire ce n'est pas un tableau mais une hashmap dont les clefs sont les id de tes modules.
    Code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    window.localStorage.setItem('modules', {
    		"47" : {
    			"id" : "47",
    			"pseudo" : "Titi",
    			"profile" : "gps",
    			"iconColor" : "3",
    			"distance" : "1",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		"48" : {
    			"id" : "48",
    			"pseudo" : "Toto",
    			"profile" : "phone",
    			"iconColor" : "10",
    			"distance" : "0",
    			"start" : "2012-09-23 08:00:00",
    			"refresh" : "08:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		"50" : {
    			"id" : "50",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		},
    		"64" : {
    			"id" : "64",
    			"pseudo" : "Tete",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    		}
    	});
    pour pouvoir y accéder ainsi:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    var mod = window.localStorage.getItem('module');
    alert(mod['48'].profile);
    alert(mod['64']['pseudo']);
     
    //ajouter un module :
    mod['75'] = {
    			"id" : "75",
    			"pseudo" : "Truc",
    			"profile" : "gps",
    			"iconColor" : "5",
    			"distance" : "5",
    			"start" : "2012-08-23 08:00:00",
    			"refresh" : "10:20:00",
    			"last" : "2012-09-23 08:00:00"
    };
    //supprimer un module :
    delete mod['75'];
    A+JYT

  12. #12
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    Par défaut

    Salut sekaijin,
    Je te remercie pour ta grande explication.
    Oui je dois me mélanger les pinceaux et peut être que j'ai mal pensé.

    Comme je l'ai écris je stocke des données de module dans localStorage.
    Ces modules envoient leur positions à un serveur que je vais importer pour afficher leurs positions. je ne suis pas encore a cet étape alors je souhaite créer une array qui va stocker ses données afin de simuler. C'est la même chose car l'import sera stocké dans une array.

    Je dois donc parcourir
    Code :
    1
    2
     
    var mod = window.localStorage.getItem('module');
    pour avoir les informations de mon/mes module/s, soit id, pseudo, profile, iconColor.

    Puis en basant sur l'id, utiliser la dernière position GPS (expl: 46.3456,6.00123)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var pos = new Array();
    pos[47][0]='46.3456,6.000123';
    pos[47][1]='46.3456,6.000124';
    pos[47][2]='46.3456,6.000323';
    pos[48][0]='46.3456,6.000123';
    pos[48][1]='46.3456,6.000124';
    pos[50][0]='46.3456,6.000123';
    pos[50][1]='46.3456,6.000124';
    pos[50][2]='46.3456,6.000323';
    pos[50][3]='46.3456,6.000323';
    pos[50][4]='46.3456,6.000323';
    //etc...
    (Les id n'ont pas forcément le même nombre de position)


    Donc, j'ai probablement mal penser en voulant créer un deuxième tableau, mais l'idée était d'avoir un tableau avec les informations nécessaires pour afficher le marker.

    J'ai probablement voulu faire trop compliqué, sorry. Je vais encore réfléchir à ça.

    Mais peut être que vous auriez des recommandations à me donner.
    Es-ce que j'ai été plus précis? Voyez-vous?
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  13. #13
    Expert Confirmé Sénior
    Avatar de SylvainPV
    Profil pro Sylvain Pollet-Villard
    Inscrit en
    novembre 2012
    Messages
    1 851
    Détails du profil
    Informations personnelles :
    Nom : Sylvain Pollet-Villard

    Informations forums :
    Inscription : novembre 2012
    Messages : 1 851
    Points : 4 387
    Points
    4 387

    Par défaut

    Et pourquoi ne pas mettre les positions dans l'objet module ?
    module.positions = array ?

  14. #14
    Expert Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 203
    Points : 6 909
    Points
    6 909

    Par défaut

    tout comme en php les indices dans un tableau sont des entiers successifs

    tout comme en php les clefs dans une hashmap sont des string libres.

    tu ne peux donc pas écrire pos[47] pour obtenir la position d'id 47 (c'est pareil en php) il te faut utiliser une hasmap pos['47']
    mais tu peux très bien ajouter des positions à ton tableau
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var pos = {}; //initialisation d'une hashmap vide
    pos['47'] = new Array(); //ajout du tableau de position du module 47
    pos['47'].push('46.3456,6.000123');
    pos['47'].push('46.3456,6.000124');
    pos['47'].push('46.3456,6.000123');
    pos['48'] = new Array(); //ajout du tableau de position du module 48
    pos['48'].push('46.3456,6.000123');
    pos['48'].push('46.3456,6.000124');
    pos['50'] = new Array(); //ajout du tableau de position du module 50
    pos['50'].push('46.3456,6.000123');
    pos['50'].push('46.3456,6.000124');
    pos['50'].push('46.3456,6.000123');
    pos['50'].push('46.3456,6.000123');
    pos['50'].push('46.3456,6.000123');
    //lecture de la 3eme position du module 50
    alert(pos['50'][2]);
    c'est exactement comme en php ton "tableau" (hashmap) pos contient des tableaux (indicés) donc à chaque fois que tu ajoutes une entrée dans pos il te faut créer un tableau le même code en php serait
    Code php :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $pos = new Array(); //initialisation d'une hashmap vide
    $pos['47'] = new Array(); //ajout du tableau de position du module 47
    $pos['47'].push('46.3456,6.000123');
    $pos['47'].push('46.3456,6.000124');
    $pos['47'].push('46.3456,6.000123');
    $pos['48'] = new Array(); //ajout du tableau de position du module 48
    $pos['48'].push('46.3456,6.000123');
    $pos['48'].push('46.3456,6.000124');
    $pos['50'] = new Array(); //ajout du tableau de position du module 50
    $pos['50'].push('46.3456,6.000123');
    $pos['50'].push('46.3456,6.000124');
    $pos['50'].push('46.3456,6.000123');
    $pos['50'].push('46.3456,6.000123');
    $pos['50'].push('46.3456,6.000123');
    //lecture de la 3eme position du module 50
    echo ($pos['50'][2]);
    si tu ne fais pas $pos['50'] = new Array(); $pos['50'] n'est pas un tableau et tu ne peux lui ajouter des éléments c'est pareil en javascript pos['50'] = new Array();
    A+JYT

  15. #15
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 252
    Points : 698
    Points
    698

    Par défaut

    ben j'avais pensé à ça, mais je préfère dissocié ces données et ne pas les stockés dans Local Storage.

    Le fait de les stocker dans une variable de manière à ce que ceci soit détruit lors que l'on quitte la page.
    La c'est plus une question de "politique"

    En fonction des modules, je préfère afficher les positions extraites "temporairement" du serveur..

    Merci sekaijin, pour ta proposition, je vais l'étudiée
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  16. #16
    Modérateur

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

    Informations forums :
    Inscription : janvier 2011
    Messages : 7 761
    Points : 14 666
    Points
    14 666

    Par défaut

    Je suis d'accord avec sekaijin quand il écrit...
    moi ce que je comprends pas c'est pourquoi tu veux construire une COPIE de ton array il te suffit d'utiliser une référence
    néanmoins en attendant que tu ais revu ta façon de structurer tes données, tu peux transposer les données de la sorte
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    var oSrc = oData['modules'];
    var tab = []; // déclaration du tableau résultat
    var i, j;
    for( i in oSrc){
      for( j in oSrc[i]){
        if( j == 'id'){
          var label = oSrc[i][j];
          tab[ label] = []; // création d'un nouveau tableau
        }
        else{
          tab[label][j] = oSrc[i][j];
        }
      }
    }
    for( i in tab){
      if( window.console) console.log( tab[i]);
    }

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •