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 ?