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 :

Question sur les tableaux (Array)


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Par d�faut Question sur les tableaux (Array)
    Bonjour

    Voila je souhaite composer un tableau de village compos� de plusieurs tableau de famille (famille 0 , etc), famille compos� d'un tableau de personne avec trois champ "nom","prenom" et "age".

    j'essai de compos� ce tableau finale (village) a partir d'une page html et de javascript.

    J'arrive a cr�er un tableau pour la premi�re famille mais je n'arrive pas a trouv� l'astuce pour mettre la famille dans le tableau village et construire un nouvelle famille...

    lol je pensais que cela serait plus simple a expliquer que cela l�histoire de village , famille, personne s'�tait pour simplifier mais bon je suis pas sur de l'effet....enfin bref voila 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <html>
    <head>
    <link href="style1.css" rel="stylesheet" type="text/css">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>test</title>
    <script type="text/javascript">
    var famille = [];
    var village = [];
     
    function ajoutpers()
    {
    	var nom = document.getElementById("nom").value;
    	var prenom = document.getElementById("prenom").value;
    	var age = document.getElementById("age").value;
     
    	var pers = [];
    	pers.push(nom,prenom,age);
    	famille.push(pers);
    	for(x=0;x<famille.length;x++)
    	{
    		alert(famille[x][0]+" "+famille[x][1]+" "+famille[x][2]);
    	}
    }
     
    function creerfamille()
    {
    	village[0] = famille;
    	alert(village[0][0][0]);	
    }
     
    </script>
    </head>
    <body>
    <input type='text' id='nom' value=''><br>
    <input type='text' id='prenom' value=''><br>
    <input type='text' id='age' value=''>
    <input type='button' value='ajout pers' onclick='ajoutpers();' />
    <input type='button' value='créer famille' onclick='creerfamille();' />
    </div>
    </body>
    </html>
    donc en gros j'arrive pas a trouver comment mettre ma famille dans mon village et repartir a z�ro pour une nouvelle famille.

    D'avance merci pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Par d�faut
    Je m'en suis finalement sortit en faisant differement 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
    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
    <html>
    <head>
    <link href="style1.css" rel="stylesheet" type="text/css">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>test</title>
    <script type="text/javascript">
     
    var famille = [];
    var tabnb = [];
    var num=0;
     
     
    function ajoutpers()
    {
    	var nom = document.getElementById("nom").value;
    	var prenom = document.getElementById("prenom").value;
    	var age = document.getElementById("age").value;
     
    	var pers = [];
    	pers.push(num,nom,prenom,age);
    	famille.push(pers);
    }
     
    function creerfamille()
    {
    	num++;	
    }
     
    function afffamille(x)
    {
    	for(i=0;i<famille.length;i++)
    	{
    		if(famille[i][0]==x)
    		{
    			alert(famille[i][1]);
    		}
    	}
    }
     
    </script>
    </head>
    <body>
    <input type='text' id='nom' value=''><br>
    <input type='text' id='prenom' value=''><br>
    <input type='text' id='age' value=''>
    <input type='button' value='ajout pers' onclick='ajoutpers();' />
    <input type='button' value='créer famille' onclick='creerfamille();' />
    <input type='button' value='créer famille' onclick='afffamille(1);' />
    </div>
    </body>
    </html>
    Je cr�er un champ supl�mentaire qui correspond au num�ro de ma famille que que j'incr�mente pour une nouvelle.....cela m'oblige a parcourrir tout le tableau pour afficher une famille mais bon.

    Si quelqu'un a une autre solution je suis preneur.

  3. #3
    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 659
    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 659
    Billets dans le blog
    1
    Par d�faut
    une autre solution aurait �t� de passer par un array litt�ral
    ou un objet json ...
    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 !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Par d�faut
    Merci pour ta r�ponse SpaceFrog.

    Ne voyant pas ce que tu entendais pas litt�ral, j'ai fait quelques recherches.

    Mais cela ne m'aide pas vraiment pour trouver ta solution.

    Le probl�me dans ma premiere id�e c est que quand famille ce trouv� dans village[0] je le pensais sauvegard� mais en fait non si je vide famille le contenue de village[0] faisait de meme.

    je d�couvre quoi

    Tu pourrais m'�claircir sur la solution pas tableau litt�ral ?

  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 659
    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 659
    Billets dans le blog
    1
    Par d�faut
    un array litt�ral poss�de non pas des indexes num�riques mais des indexes nomm�s
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    myArr= new Array();
    myArr['Hello']="bonjour";
    alert(myArr['hello'])
    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 !

  6. #6
    Membre exp�riment�
    Profil pro
    Inscrit en
    D�cembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 128
    Par d�faut
    Citation Envoy� par SpaceFrog Voir le message
    un array litt�ral poss�de non pas des indexes num�riques mais des indexes nomm�s
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    myArr= new Array();
    myArr['Hello']="bonjour";
    alert(myArr['hello'])
    Houla!!!!!

    D�sol� je vais �tre un peu direct, mais c'est un tr�s mauvais conseil.

    D�j� un "Array litt�ral" ce n'est pas �a on dit litt�ral en javascript les objets ou structures de donn�es qui utilisent la "notation litt�rale".
    Exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // non littéral
    var obj = new Object();
    var arr = new Array();
    var reg = new RegExp("abc");
    var str = new String("str");
     
    // littéral
    var obj = {};
    var arr = [];
    var reg = /abc/;
    var str = "str"
    Donc quand tu fais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    myArr= new Array();
    myArr['Hello']="bonjour";
    alert(myArr['hello'])
    D�j� tu n'utilise pas de "tableau litt�ral" de plus tu semble confondre ceque tu appelle tableau lit�ral avec une Map, ou un "tableau associatif" en PHP.

    Ce n'est pas du tout le cas, ce qui se passe r�ellement c'est que :

    -1 : tu cr�e un tableau non litt�ral, ce tableau h�rite de Object
    - 2 : tu attribue une propri�t� � ce tableau (tu peux le faire car justement il h�rite de Object)

    Mais ton tableau est toujours vide !!

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    var arr = [];
    arr['yo'] = 'yo';
    arr.ya = 'ya';
    console.log(arr, arr.yo, arr['ya']); // []   yo   ya
    En gros tu utilise un tableau inutilement, car tout ce que tu utilise c'est l'interface Object.
    Cela nuit � la lisibilit� car l'on s'attend � ce que tu utilise un tableau, ce que tu ne fais pas, tu t'expose � des bugs car tu aura un comportement impr�visible si tu utilise des cl�s num�riques, elle seront cast�s en Double et iront dans le tableau (au contraire des cl�s non num�riques qui cr�eront des propri�t�es et non des valeurs dans le tableau).

    Ex :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var arr = [];
    arr['yo'] = 'yo';
    arr.ya = 'ya';
    arr['3'] = 'trois',
    console.log(arr, arr.yo, arr['ya']); // [undefined, undefined, undefined, 'trois']   yo   ya
    Pour que ton exemple soit correct il faut utiliser un objet (litt�ral ou non) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var obj = new Object();
    obj['hello']="bonjour";
    alert(obj['hello']);
     
    // ou
     
    var obj = {};
    obj.hello="bonjour";
    alert(obj.hello);

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. question sur les tableaux
    Par scolopendra dans le forum Langage
    R�ponses: 4
    Dernier message: 12/06/2007, 15h15
  2. Question sur les tableaux
    Par Chii-san dans le forum VB.NET
    R�ponses: 2
    Dernier message: 05/03/2007, 11h48
  3. R�ponses: 9
    Dernier message: 13/06/2006, 21h52
  4. [Tableaux] Question sur les tableaux
    Par Shandler dans le forum Langage
    R�ponses: 16
    Dernier message: 21/04/2006, 00h15
  5. question sur les tableaux
    Par Neko dans le forum C++
    R�ponses: 13
    Dernier message: 14/02/2006, 02h21

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