2013-06-25 21 views
5

Come posso verificare se sono sull'ultima iterazione di questo ciclo? Mi dispiace per aver fatto questa domanda. Sono abituato a programmare in VB.NET e javascript sembra molto criptico per natura.Verifica ciclo se sull'ultima iterazione?

if (QuerySplit.length > 1) { 
    var NewQuery 
    for (i=0; i<QuerySplit.length; i++) 
    { 
     // if we're not on the last iteration then 
     if (i != QuerySplit.length) { 
      // build the new query 
      NewQuery = QuerySplit[i].value + " AND " 
     } 
    } 
} 
+0

Prova 'if (i! == (QuerySplit.length - 1)) {' – Ian

+0

Anche i punti e virgola non sono obbligatori ma altamente raccomandati! –

+0

Non sai cosa dovrebbe fare - stai sovrascrivendo 'NewQuery' ad ogni iterazione (ma l'ultima)? – Bergi

risposta

5

Si precisa che è necessario var NewQuery = ""; e verificare la lunghezza - 1. Inoltre, l'ultima if è solo una supposizione di ciò che probabilmente si vuole fare:

if (QuerySplit.length > 1) { 
    var NewQuery = ""; 
    for (i = 0; i < QuerySplit.length; i++) { 
    // if we're not on the last iteration then 
    if (i != QuerySplit.length - 1) { 
     // build the new query 
     NewQuery += QuerySplit[i].value + " AND " 
    } else { 
     NewQuery += QuerySplit[i].value; 
    } 
    } 
} 

Se QuerySplit.length è 4, allora:

0, 1, 2, 3

... sono gli indici. Quindi vuoi controllare quando l'indice è 3 e questa è la tua ultima iterazione.

2

L'array è a base 0. Ciò significa che se nell'array sono presenti 3 elementi, gli indici saranno 0,1,2. L'ultimo è uno in meno della lunghezza.

Dovrete controllare in questo modo: (i < QuerySplit.length -1)

9

Il tuo i è sempre più piccolo rispetto a QuerySplit.length - questa è la tua condizione del ciclo. In ultima iterazione avrà un valore di QuerySplit.length-1, questo è ciò che è possibile controllare contro:

if (i < QuerySplit.length - 1) 

Btw, faresti meglio usare il join Array method per quello che stai cercando di fare:

var NewQuery = QuerySplit.map(function(x){return x.value;}).join(" AND "); 
+0

c'è comunque l'aggiunta di un credito parziale? – Neil

+0

@Neil: se non si accetta la risposta, è ancora possibile [aggiornarlo] (http://stackoverflow.com/privileges/vote-up) o [assegnarmi una taglia] (http://stackoverflow.com/help/bounty) (che è troppo credito, però :-) – Bergi

Problemi correlati