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:
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:
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:
1 2
| tabAssDom[id1][id2][id3].length
ou encore tabAssDom.length |
il me retourne n'importe quoi (en règle général 30) 8O
Malgré cela l'exploitation du tableau via for...in marche correctement.
Code:
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:
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 :D
Have you some idea ? ;)