2011-03-15 15 views
37

Penso che sto diventando pazzo. Ho una domanda semplice con cui sto lottando per qualche motivo.Trova lunghezza (dimensione) di un array in jquery

Perché il sotto restituisce "indefinito"?

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

modificare Originariamente ho digitato testvar [1] .length. Sapevo che questo era un errore. Intendevo testvar.length

+0

Cosa stai cercando di ottenere? Cosa ti aspetti che il risultato sia? – Cameron

risposta

67

Perché 2 non è un array, è un numero. I numeri non hanno lunghezza.

Forse intendevi scrivere testvar.length; anche questo non è definito, poiché gli oggetti (creati usando la notazione { ... }) non hanno una lunghezza.

Solo array hanno una proprietà length:

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

noti che matrici JavaScript sono indicizzate partendo 0 e non sono necessariamente sparse (quindi perché il risultato è 3 e non 2 - vedi this answer per una spiegazione quando la matrice sarà sparsa e quando non lo farà).

1

L'intero non ha una lunghezza del metodo. Prova stringa

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

testvar [1] è il valore di tale indice di array, che è il numero 2. I numeri non hanno una proprietà di lunghezza, e si sta controllando per 2.Length che è indefinito. Se vuoi la lunghezza dell'array, controlla testvar.length