Prob length sur un array associatifs

Résolu
cs_destiny Messages postés 249 Date d'inscription jeudi 17 février 2005 Statut Membre Dernière intervention 29 août 2011 - 26 sept. 2008 à 09:52
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 26 sept. 2008 à 22:26
Bonjour,

Tout est dans le titre, je me tue a essayer de connaitre le nbr d'enregistrement dans les deux tableaux ci-dessous ...
Ca me retoure toujours
0 ...

//------------------------------Array gamme-------------------------------
var arrayGamme = new Array();
//------------------------------Array modèle------------------------------
var arrayModele = new Array();

arrayGamme['Citadine'] = 'I';
arrayModele['I'] = new Array();
arrayGamme['Contemporaine'] = 'C';
arrayModele['C'] = new Array();
arrayGamme['Diamant'] = 'D';
arrayModele['D'] = new Array();
arrayGamme['Evasion'] = 'S';
arrayModele['S'] = new Array();
arrayGamme['Evolution'] = 'E';
arrayModele['E'] = new Array();
arrayGamme['Fusion'] = 'F';
arrayModele['F'] = new Array();
arrayGamme['Tradition'] = 'T';
arrayModele['T'] = new Array();
var arrayGammeCount = 7;
arrayModele['C'][0] = 'Achard';
arrayModele['C'][1] = 'Apollinaire';
arrayModele['C'][2] = 'Aragon';

....

arrayModele['T'][250] = 'Vaugirard';
arrayModele['T'][251] = 'Villette';
arrayModele['T'][252] = 'Wagram';






alert(arrayModele.length); ///Marche pas (0)
alert(arrayGamme.length); ///Marche pas (0)






Merci d'avance, DeST

http://race24h.org/


http://www.exile.fr

5 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
26 sept. 2008 à 10:22
bonjour,

lu et copié/collé depuis selfHTML :

Les tableaux associatifs sont des tableaux dans lesquels l'accès aux différents éléments
se fait à l'aide d'une chaîne de caractères. La chaîne de caractères est considérée comme
clé pour l'accès. Tous les objets JavaScript, qui possèdent une propriété name ou id, comme
par exemple les objets forms ou bien elements, représentent pour JavaScript des tableaux
associatifs. Les tableaux associatifs sont particulièrement indiqués en relation avec des
tableaux à plusieurs dimensions. Ils permettent, indépendamment de la position, de rechercher
la valeur d'un élément. L'inconvénient en est que les méthodes de l'objet Array ne lui sont pas
applicables. De même les tableaux associatifs ne connaissent-ils pas la propriété length.
Les éléments d'un tableau associatif ne peuvent toujours être adressés qu'avec leur nom
ou par une boucle for-in.

Cordialement     Bul  [mon Site] [M'écrire], <!--
cs_destiny Messages postés 249 Date d'inscription jeudi 17 février 2005 Statut Membre Dernière intervention 29 août 2011
26 sept. 2008 à 10:30
Fais chier ...

Web master LFGTR - RACE24H
http://www.exile.fr
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
26 sept. 2008 à 11:08
bof... pour l'utilisation d'un tableau associatif, le length est probablement inutile,
       il n'offre aucun intérêt à priori... alors...
CordialementBul[mon Site][M'écrire], <!--
_BetOZ_ Messages postés 1 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 26 septembre 2008
26 sept. 2008 à 12:19
try this.

var num = 0;
for(var key in arrayModele){               
      num++;
 }
num--;

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
26 sept. 2008 à 22:26
Bonsoir,

J'ai envie de dire qu'un tableau associatif n'existe pas en JS, il n'existe que des objets et les objets se comportent comme des "tableaux associatif". Sans rentrer dans les détails, la classe Array est un objet un peu particulier.

Quand on écrit :
var a = [];
a[0] = 'toto';
a[1] = 'titi';

on ne fait que définir les propriété 0 et 1 à l'objet a (dont le prototype est celui du constructeur Array). On pourrait accéder aux différents éléments via a.0 et a.1 plutot que a[0] et a[1], ensuite le prototype de Array possède une propriété length qui nous permet de connaitre le dernier index + 1 du tableau

var a = [];
a[0] = 'toto'; a[1] = 'titi'; a[9] = 'tutu';

a.length nous renverra 10 alors que a[3] nous renverra undefined.

_BetOz_  le code que tu nous donne permet de recuperer le nombre de propriété contenu dans la chaine de prototype du constructeur de l'objet. Or dans notre cas, le prototype de l'objet créé n'est pas vide puisqu'il s'agit du prototype de Array, lorsque tu itéres sur toutes les propriétés de arrayModele via le for in, tu vas également itérer sur les propriété de Array : length; push; etc ...

<hr />Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
Rejoignez-nous