cursor.forEach()中的“continue”

我正在使用meteor.js和MongoDB构build一个应用程序,我有一个关于cursor.forEach()的问题。 我想检查每个for each迭代开始时的一些条件,然后跳过元素,如果我不需要对它进行操作,那么我可以节省一些时间。

这是我的代码:

// Fetch all objects in SomeElements collection var elementsCollection = SomeElements.find(); elementsCollection.forEach(function(element){ if (element.shouldBeProcessed == false){ // Here I would like to continue to the next element if this one // doesn't have to be processed }else{ // This part should be avoided if not neccessary doSomeLengthyOperation(); } }); 

我知道我可以使用cursor.find()。fetch()将光标移动到数组,然后使用常规for循环遍历元素,并使用继续和正常打破,但我感兴趣,如果有东西类似于forEach )。

forEach()每一次迭代都会调用你提供的函数。 要在任何给定的迭代中停止进一步的处理(并继续下一个项目),您只需要在适当的位置从函数return

 elementsCollection.forEach(function(element){ if (!element.shouldBeProcessed) return; // stop processing this iteration // This part will be avoided if not neccessary doSomeLengthyOperation(); }); 

在我看来最好的方法来实现这一点,通过使用filter 方法,因为它是无意义的返回forEach块; 作为你的代码片段的例子:

 // Fetch all objects in SomeElements collection var elementsCollection = SomeElements.find(); elementsCollection .filter(function(element) { return element.shouldBeProcessed; }) .forEach(function(element){ doSomeLengthyOperation(); }); 

这将缩小您的elementsCollection并保持应该被处理的filtred元素。