Prob length sur un array associatifs [Résolu]

Signaler
Messages postés
249
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
29 août 2011
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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], <!--
Messages postés
249
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
29 août 2011

Fais chier ...

Web master LFGTR - RACE24H
http://www.exile.fr
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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], <!--
Messages postés
1
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
26 septembre 2008

try this.

var num = 0;
for(var key in arrayModele){               
      num++;
 }
num--;
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
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