Cómo 'continuar' dentro de cada bucle: subrayado, node.js


80

El código en node.js es bastante simple.

_.each(users, function(u, index) {
  if (u.superUser === false) {
    //return false would break
    //continue?
  }
  //Some code
});

Mi pregunta es ¿cómo puedo continuar con el siguiente índice sin ejecutar "Algún código" si superUser está configurado como falso?

PD: Sé que otra condición resolvería el problema. Todavía tengo curiosidad por saber la respuesta.

Respuestas:


137
_.each(users, function(u, index) {
  if (u.superUser === false) {
    return;
    //this does not break. _.each will always run
    //the iterator function for the entire array
    //return value from the iterator is ignored
  }
  //Some code
});

Tenga en cuenta que con lodash (no subrayado) _.forEachsi desea terminar el "ciclo" antes, puede return falsehacerlo explícitamente desde la función iteratee y lodash terminará el forEachciclo antes.



6
Porque _.eachy un for () {}bucle regular no son lo mismo.
Peter Lyons

@ConAntonakos Cuando lo usa for-each(collection, callback)en JS, no hay ningún bucle for dentro, callbackpor break/continuelo tanto , no se aplica.
pgpb.padilla

12

En lugar de la continueinstrucción en el bucle for, puede usar la returninstrucción _.each()en el subrayado.js, solo omitirá la iteración actual.


0
_.each(users, function(u, index) {
  if (u.superUser) {
    //Some code
  }
});

Lo siento. Debería haber puesto el escenario en detalle. Necesito ejecutar algún código si el superusuario es falso y luego continuar. Habrá otra condición, por ejemplo, si (superUser! = Falso && activado) para lo cual necesito hacer algo más y ejecutar "Algún código" y luego hay otra para la cual necesito ejecutar "Algún código". Solo quería saber si hay una manera de hacerlo sin volver a escribir el mismo código dentro de else if y else. No quiero crear otra función para esto.

1
Estaba preguntando cómo evitar esa muy mala práctica del código de flechas.
David Betz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.