2012-10-14 13 views

risposta

8

i restituisce l'indice come una stringa, se li si analizza come un intero, che avrebbe funzionato

a = [ 1, 2, 3 ] 

for i of a 
    if parseInt(i) == 0 
     console.log a[i] 
+0

Sì, hai ragione! Ho appena capito da solo minuti fa ... LOL Grazie comunque :) – x1a0

+1

@ZhangXiao Ma la risposta di kurmiau è stata pubblicata prima della tua. Quindi, ti suggerisco di eliminare la tua risposta e accetta questa. –

+1

@RobW Hai ragione. Lo farò :) – x1a0

1

È perché i sarà solo 1, 2 o 3, come si esegue un ciclo sulle voci di a, non i numeri di indice.

Questo funziona nel modo descritto sopra:

a = [ 1, 2, 3 ] 

for i in [0..a.length] 
    if i == 0 
     console.log a[i] 
+0

ciao, grazie per la tua risposta :) Tuttavia stavo girando sull'indice. Si noti che stavo usando 'of' ma' in'. – x1a0

+0

@ZhangXiao: non si deve usare 'of' per eseguire il loop su un array, utilizzare' in' per eseguire il loop su array. –

+0

@muistooshort Grazie. Capisco la differenza e in questo caso uso 'of' :) – x1a0

1

non si dovrebbe usare of per eseguire il loop su un array, è necessario utilizzare in. Da fine manual:

Le comprensioni possono anche essere utilizzate per iterare su chiavi e valori in un oggetto. Utilizzare of per segnalare la comprensione sulle proprietà di un oggetto anziché i valori in una matrice.

yearsOld = max: 10, ida: 9, tim: 11 

ages = for child, age of yearsOld 
    "#{child} is #{age}" 

Quindi si sta cercando per scorrere i proprietà di un oggetto array, non i suoi indici.

Si consiglia di utilizzare uno di questi per il ciclo:

for e, i in a 
    if(i == 0) 
     console.log(a[i]) 

for e, i in a 
    console.log(e) if(i == 0) 

console.log(e) for e, i in a when i == 0 

#... 

Oppure, dal momento che si dispone di un array e un indice numerico, perché non basta saltare il ciclo e arrivare subito al punto:

console.log(a[0]) 
Problemi correlati