2011-03-15 22 views
37

Creo que me estoy volviendo loco. Tengo una pregunta simple con la que estoy luchando por alguna razón.Encontrar la longitud (tamaño) de una matriz en jquery

¿Por qué a continuación se devuelve 'indefinido'?

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

edición Originalmente escrito testvar [1] .length. Sabía que esto era un error. Quise decir testvar.length

+0

¿Qué está tratando de lograr? ¿Cuál esperas que sea el resultado? – Cameron

Respuesta

67

Porque 2 no es una matriz, es un número. Los números no tienen longitud.

Quizás se propuso escribir testvar.length; esto tampoco está definido, ya que los objetos (creados usando la notación { ... }) no tienen una longitud.

Sólo las matrices tienen una propiedad de longitud:

var testvar = [ ]; 
testvar[1] = 2; 
testvar[2] = 3; 
alert(testvar.length); // 3 

Tenga en cuenta que las matrices de JavaScript están indexados a partir de las 0 y no son necesariamente sparse (de ahí el resultado es 3 y no 2 - ver this answer para una explicación de cuando la matriz será escasa y cuando no lo será).

1

Entero no tiene longitud de método. Trate cadena

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

testvar [1] es el valor de dicho índice de la matriz, que es el número 2. Los números no tienen una propiedad de longitud, y que está comprobando 2.length que es indefinido. Si desea la longitud de la matriz, simplemente marque testvar.length

Cuestiones relacionadas