如何在每个循环中“继续”:下划线,node.js


80

node.js中的代码非常简单。

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

我的问题是,如果将superUser设置为false,如何在不执行“某些代码”的情况下继续下一个索引?

PS:我知道其他条件也可以解决问题。仍然想知道答案。

Answers:


136
_.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
});

附带说明一下,_.forEach如果您想尽早结束“循环” ,请使用lodash(而不是下划线),可以return false从iteratee函数显式地结束,lodash将forEach尽早终止循环。



6
因为_.each和常规for () {}循环不是同一回事。
彼得·里昂斯

@ConAntonakosfor-each(collection, callback)在JS中使用时,里面没有任何for循环,callback因此break/continue不适用。
pgpb.padilla

12

除了continue在for循环中声明,您可以在underscore.js中使用returnin语句,_.each()它将仅跳过当前迭代。


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

抱歉。我应该详细介绍一下方案。如果超级用户为假,我需要执行一些代码,然后继续。还有另一个条件,如果(超级用户!= false &&激活),我需要执行其他操作并执行“某些代码”,然后还有其他条件需要执行“某些代码”。我只是想知道是否有一种方法,而不必在其他条件下重写相同的代码。我不想为此创建另一个功能。

1
他在问如何避免这种非常糟糕的箭头编码实践。
David Betz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.