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 mutlidim, besoin de précision


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 144
    Par défaut tableau mutlidim, besoin de précision
    Bonjour à tous,

    Voila j'ai besoin de mettre en place un tableau multidimensionnel, mais je dois mal l'instancier puisque j'ai des problèmes sur la valeur de la propriété .length

    nb : Mon tableau est à trois dimensions, voici son instanciation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tabAssDom = new Array ()
    Comme les dimensions sont variables, je ne peux lui donner de tailles fixes tout de suite (en plus je ne sais pas si cela se fait en JS)

    un code étant plus explicite, voici la procédure d'insertion dans ce tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!tabAssDom[id1])
    	tabAssDom[id1] = new Array ();
    if (!tabAssDom[id1][id2])
    	tabAssDom[id1][id2] = new Array ();
     
    tabAssDom[id1][id2][id3] = "1";
    Je pense que cette partie est correct, le problème est que si je test la propriété length de n'importe laquelle des dimensions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tabAssDom[id1][id2][id3].length
    ou encore tabAssDom.length
    il me retourne n'importe quoi (en règle général 30)

    Malgré cela l'exploitation du tableau via for...in marche correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (var id1in tabAssDom)
    {
    	...
    	for (var DGId in tabAssDom[NId])
    	{
    		...
    		for (var DTId in tabAssDom[NId][DGId])
    		{
    			...
    		}
    	}
    }
    Le problème se situe maintenant sur la procédure de suppression d'un élément, vous l'aurez compris ce tableau représentant un arbre, lors de cette suppression si un noeud disparait je dois supprimer la branche entière
    voici la procédure associée, qui ne marche pas, vu que la propriété .length renvoi n'importe quoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    tabAssDom[id1][id2].splice(id3,1);
     
    if (!tabAssDom[id1][id2].length)
    {	
    	tabAssDom[id1].splice (id2,1);
     
    	if (!tabAssDom[id1].length)
    	{
    		tabAssDom.splice(id1,1);
    	}
    }
    J'ai été un peu long, mais je pense que tout est clair
    Have you some idea ?

  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 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
    question subsidiare
    quelles valeurs peuvent prendre tes varaible indices de l'array littéral ?

    dans un array littéral; il semblerait que javascript réserve des indices intermédiaires ???
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 144
    Par défaut
    Seulement des nombres
    dois je caster pour en être sur ?

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type='text/javascript'>
     
    var tabAssDom= new Array() 
    if (!tabAssDom['bb'])
    	tabAssDom['bb'] = new Array ();
    if (!tabAssDom['bb']['cc'])
    	tabAssDom['bb']['cc'] = new Array ();
     
    tabAssDom['bb']['cc']['dd'] = "1";
    alert (tabAssDom['bb']['cc'].length)
    alert (tabAssDom['bb']['cc']['dd'].length)
    </script>
    j'ai bien un bon retour des length
    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 !

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    sur la réponse de SF, c'est vrai, un indice littéral ne permet pas de calculer la longueur du tableau; il faut travailler en deux temps:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (ind in tab){
    lg++
    }
    alert(lg);

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 144
    Par défaut
    Merci pour vos réponses cela a ouvert mes perspectives, en fait les indices que je lui passe sont des clés d'identifiant d'entités provenant de ma base ...

    Et la ou il y a moyen de rigoler , c'est que la valeur 30 qu'il me retourne est
    identifiant 29 + 1 (le zéro certainement)

    je trouve cela un peu tirer par les cheveux tout de même, merci pour votre aide

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var tabAssDom= new Array() 
    tabAssDom[30] = "abc"
    alert (tabAssDom.length)
    alert(tabAssDom[0])
    oui c'est une curiosité de javascript ...

    il considère que le tableau comporte 31 éléments même si les 30 premiers sont undefined ...
    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 !

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    oui, c'est ça; bref, le for / in qui incrémente une variable te renverra length quand même;

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div class="bbcode_container">
    	<div class="bbcode_quote">
    		<div class="quote_container">
    			<div class="bbcode_quote_container"></div>
     
    				tabAssDom[id1][id2][id3].length
    ou encore tabAssDom.length
     
    		</div>
    	</div>
    </div>
    la première alerte te donnera la longueur de la chaîne contenue dans la case désignée;

    la seconde te renverra le nombre d'éléments de premier niveau (tableau tabAssDom[]);

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

Discussions similaires

  1. Requete Insert - besoin de précisions
    Par sqlnoob dans le forum ASP
    Réponses: 3
    Dernier message: 14/03/2007, 12h18
  2. [SOAP] besoin de précision
    Par Louis-Guillaume Morand dans le forum Services Web
    Réponses: 1
    Dernier message: 05/03/2007, 21h10
  3. [POO Basique] Besoin de précision sur une notion de base
    Par alois.cochard dans le forum Langage
    Réponses: 8
    Dernier message: 15/09/2006, 09h01
  4. [VB.NET]Besoin de précision pour architecture 3-tiers
    Par Dnx dans le forum Windows Forms
    Réponses: 8
    Dernier message: 14/09/2005, 09h09
  5. Besoin de précision sur TThread
    Par psau dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/02/2005, 23h35

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