Le 20/02/2011 11:40, Daniel Cartron a écrit :
Bonjour tous,

Je veux faire un tableau à plusieurs dimensions mais je me demande si ma
conception n'est pas erronnée,

montableau = new Array();
montableau['CODE1'] = new Array();
montableaube['CODE1'][0]['TRUC'] = 'A';
montableaube['CODE1'][1]['TRUC'] = 'B';
montableaube['CODE1'][2]['TRUC'] = 'C';
montableaube['CODE1'][3]['TRUC'] = 'D';
montableaube['CODE1'][0]['MACHIN'] = 'E';
montableaube['CODE1'][1]['MACHIN'] = 'F';
montableaube['CODE1'][2]['MACHIN'] = 'G';
montableaube['CODE1'][3]['MACHIN'] = 'H';

et on continue avec CODE2 etc.

Le pb est que j'ai deux variables, qui contiennent l'une soit TRUC soit
MACHIN, et l'autre l'une des valeurs A B C ... et je dois récupérer la valeur
de CODEn et le chiffre 0, 1, 2 ou 3. C'est faisable ou je dois écrire mon
tableau autrement ? Et si c'est faisable quelle est la syntaxe pour récupérer
mes infos ?

Merci d'avance
Bonsoir,

il faut bien distinguer les tabeaux associatifs (=Object) et les tableaux (=Array) qui sont mélangés dans ton exemple.
- Array est conçu pour contenir des valeur indexées avec des entiers.
- Object est un tableau associatif clef/valeur.

Quand tu écris :

montableau = new Array();
montableau['CODE1'] = …

tu mélanges tableau et objet. Ça fonctionne car les tableaux sont aussi des objets, mais ça n'est pas conçu pour, et par exemple la propriété .length ne va pas fonctionner correctement.
Dans ce cas il faut plutôt écrire :

montableau = new Object();
montableau['CODE1'] = …

quitte à renommer la variable. :-)


Dans ton exemple je ne comprends pas ce qui te pose problème. (Ni pourquoi il y a un montableau et un montableaube d'ailleurs.) Le plus simple si tu veux chercher des valeurs par TRUC/MACHIN et A/B/C est de définir les objets qui correspondent :
obj = new Object;
obj['TRUC'] = new Object;
obj['TRUC']['A'] = …
obj['TRUC']['B'] = …
obj['TRUC']['C'] = …
obj['MACHIN'] = new Object;

Ton modèle doit marcher aussi, mais tu devras parcourir les différents étages de ton tableau pour trouver les A, B, C…

Concernant les performances, vu l'efficacité des navigateurs actuels ça n'est pas la peine de te poser la question je pense, à moins que tu n'aies des milliers de lignes à parcourir.

@+
Coucouf/Aurélien
_________________________________
Linux mailing list
Linux@lists.parinux.org
http://lists.parinux.org/mailman/listinfo/linux

Répondre à