Bug avec array::length

Résolu
Checker_Bobby Messages postés 12 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 21 septembre 2005 - 21 sept. 2005 à 09:08
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 21 sept. 2005 à 10:29
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 sept. 2005 à 09:47
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 ). @+
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 sept. 2005 à 10:29
http://fr.selfhtml.org/
une doc ( complète ? ) "CSS/HTML/JavaScript"
en français, téléchargeable.
@+
3
Checker_Bobby Messages postés 12 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 21 septembre 2005
21 sept. 2005 à 09:10
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!
0
Checker_Bobby Messages postés 12 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 21 septembre 2005
21 sept. 2005 à 10:03
Quel dommage que ce point ne soit pas plus détaillé dans mon bouqin... En tout cas merci beaucoup, je m'en rappellerai!
0
Rejoignez-nous