Bug avec array::length [Résolu]

Signaler
Messages postés
12
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
21 septembre 2005
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour,
je savais pas trop ou mettre la remarque suivante... J'ai constater un truc "bizarre" avec JavaScript qui m'a bien tordu l'esprit avant que je ne trouve cette "erreur". Je n'ai aucune explication, juste quelques suppositions, et si quelqu'un pouvait m'eclairer se serait sympa :D

Je créé un tableau associatif, avec pour clé des codes sur 4 caracteres (qui sont des chiffres). Or si le code commence par un '0' (significatif, car c'est le caractere 0) l'objet array se met à me dire que la taille du tableau est de 0!

exemple:
<!---
var tab= new Array();
tab['0101'] = 2;
tab['0103'] = 3;

alert("longueur: "+tab.length);
for(code in tab)
alert(code + "=>" + tab[code]);
--->
Bien qu'il affirme qu'il y'ai 0 éléments, il peut en trouver 2 quand même...

Un dernier exemple pour la route:
<!---
var tab= new Array();
tab['0101'] = 2;
tab['7103'] = 3;

alert("longueur: "+tab.length);
for(code in tab)
alert(code + "=>" + tab[code]);
--->

La il me dit qu'il y'a 7104 élèments, mais n'en trouve bien que 2 dans le 'for in' ...

Mon explication: je pense que JavaScript a tendance à melanger un peu les entiers, et les chaines de caracteres qui "ressemblent" à des entiers... a cause du typage faible. PHP m'a deja posé des problème avec ces codes, mais JavaScript détient le record! Le seul moyen que j'ai trouvé pour avoir la taille réelle du tableau est de compter les élèments un par un...

J'attends vos remarques :)

4 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
bonjour,
lu sur selfhtml :

tableaux associatifs
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
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.

donc, tout est normal ( et pas seulement si la clé
commence pas 0 ). @+
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
http://fr.selfhtml.org/
une doc ( complète ? ) "CSS/HTML/JavaScript"
en français, téléchargeable.
@+
Messages postés
12
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
21 septembre 2005

Houla... Je suis désolé, je m'appercois que ma mise en page est vraiment foirée !
Si vous savez comment y modifier dites le moi, c'est limite illisible!
Messages postés
12
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
21 septembre 2005

Quel dommage que ce point ne soit pas plus détaillé dans mon bouqin... En tout cas merci beaucoup, je m'en rappellerai!