2015-10-21 15 views
37

Ho questo codice le righe:Come fermare lodash.js _.each loop?

_.each($scope.inspectionReviews, function (value, key) { 
    alert("status=" + value.IsNormal + " " + "name=" + value.InspectionItemName); 
    if (!value.IsNormal) { 
     $scope.status = false; 
     return; 
    } 
    $scope.status = true; 
}) 

Ad un certo punto che voglio smettere di looping, ma sembra che il ritorno non funziona.

Come posso interrompere il ciclo?

+0

Hai provato a restituire false? – adeneo

+0

Prova a ['break'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/break) it –

+0

Possibile duplicato di [Come interrompere un ciclo for?] (http://stackoverflow.com/questions/9830650/how-to-stop-a-for-loop) – Jesse

risposta

72
return false; 

Utilizzare questo in un lodash ciascuno per rompere.

MODIFICA: Ho visto il titolo modificato in underscore. È sottolineato o lodash? Come ho già detto sopra, puoi rompere uno in lodash, ma sottolineo che credo emuli per tutti quelli che non lo prevedono.

+1

Qualsiasi vantaggio di 'return false;' over' return'? O solo per la leggibilità? – Rayon

+0

@RayonDabre Se il suo lodash ha il vantaggio di rompere il loop. Solo usando return non si interrompe il ciclo, è necessario restituire false per ottenerlo. – AtheistP3ace

+4

@RayonDabre 'return' con nessun parametro equivale a' return undefined', che equivale a eliminare la fine della funzione senza utilizzare un'istruzione 'return'. – Barmar

2

Se si desidera verificare se una determinata condizione è vera per uno dei membri della raccolta, utilizzare Underscore's some (con alias come any) anziché each.

var hasAtLeastOneFalseStatus = _.any($scope.inspectionReviews, function (value, key) { 
    return !value.IsNormal; 
}) 

$scope.status = hasAtLeastOneFalseStatus ? false: true; 
3

return false => break; return => contiune;

+0

Sarebbe meglio se spiegassi perché la tua risposta sarebbe utile. –

+0

è meglio perché il controllo del flusso. la risposta mostra la differenza tra non restituire nulla (il che farebbe sì che il ciclo salti all'elemento successivo) o restituire false (il che causerebbe l'interruzione del ciclo complessivo) Ho imparato qualcosa oggi. Grazie a @jack wu –