web-dev-qa-db-fra.com

Trouver la longueur (taille) d'un tableau dans jQuery

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

42
Ed.

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).

81
Cameron

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 

4
mVChr

Entier n'a pas de longueur de méthode. Essayer de la ficelle

var testvar={};
testvar[1]="2";
alert(testvar[1].length);
2
Dim_K

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);
0
RafaSashi