Je pense que je deviens fou. J'ai simplement une question avec laquelle je me bats pour une raison quelconque.
Pourquoi le texte ci-dessous renvoie-t-il «non défini»?
var testvar={};
testvar[1]=2;
testvar[2]=3;
alert(testvar.length);
edit J'ai initialement écrit testvar [1] .length. Je savais que c'était une erreur. Je voulais dire testvar.length
Parce que 2
n'est pas un tableau, c'est un nombre. Les nombres n'ont pas de longueur.
Peut-être que vous vouliez écrire testvar.length
; ceci est également non défini, car les objets (créés à l'aide de la notation { ... }
) n'ont pas de longueur.
Seuls les tableaux ont une propriété de longueur:
var testvar = [ ];
testvar[1] = 2;
testvar[2] = 3;
alert(testvar.length); // 3
Notez que les tableaux Javascript sont indexés à partir de 0
et ne sont pas nécessairement sparse (d'où le résultat 3 et non 2 - voir cette réponse habitude).
testvar [1] est la valeur de l'index de ce tableau, qui correspond au nombre 2. Les nombres n'ont pas de propriété length et vous vérifiez 2.length qui n'est pas défini. Si vous voulez la longueur du tableau, vérifiez simplement testvar.length
Entier n'a pas de longueur de méthode. Essayer de la ficelle
var testvar={};
testvar[1]="2";
alert(testvar[1].length);
Si length
n'est pas défini, vous pouvez utiliser:
function count(array){
var c = 0;
for(i in array) // in returns key, not object
if(array[i] != undefined)
c++;
return c;
}
var total = count(array);