如何突破.each()并返回一个函数的值

我想使用return false来打破一个.each(),但也同时返回一个值。 我怎样才能做到这一点?

请参阅一个解决方法function,看看我想要做什么:

 function HasStores(state) { var statehasstores = false; $(stores).each(function (index, store){ if(state == store.state && store.category == "meyers"){ statehasstores = true; return false; //break } }); return statehasstores; } 

伪代码喜欢做的是:

 Function () { for() { if found { return true; } } return false; } 

你做对了…

http://api.jquery.com/each/引用;

“我们可以通过返回false来停止callback函数中的循环。”

有创意:

 try { $(stores).each(function (index, store) { if(state == store.state && store.category == "meyers"){ throw store; } }); } catch(e) { // you got e with the value } 

不,我只是在开玩笑,不要用这个:)。 这是我喜欢分享的想法。

在循环外部使用一个variables来获取值,然后使用它。

 var value; $(stores).each(function (index, store) { if(state == store.state && store.category == "meyers"){ statehasstores = true; value = store; // added line return false; //break } }); alert(value); 

你做的方式就好了。 我已经在jsFiddle上进行了testing,在这里看到一个例子

这不适合你? 你能展示更多的上下文吗?

  • jQuery。每个

或者,您可以使用for循环而不是each() ,只是返回值。

你所build议的是这样做的方式。 我认为这不是一个解决方法,更像一个成语。

好吧,我想这个问题有点怀疑,所以也许我在这里更清楚一点:

  • 当jquery doc说:“我们可以通过返回false来停止callback函数内的循环。” 你也是 :

    Function(){for(){if found {return true; }
    }返回false; }

这并不意味着你的function将返回true时,findsearch的元素。 相反,它将始终返回false。

所以为了让你的function像你这样做,

 Function () { variable found = false; foreach() { if found { found = true; return false; // This statement doesn't make your function return false but just cut the loop } } return found; 

}

当然还有很多其他的方法可以执行,但我认为这是最简单的方法。

Coopa – 简单!

正如其他人已经从jQuery的每一个注意到的,返回false将只从循环中断,不返回值,返回true,但将“继续”,并立即开始下一个迭代。 有了这些知识,就可以像这样简化代码:

 function HasStores(state) { var statehasstores = false; $(stores).each(function (index, store){ // continue or break; statehasstores = !(state == store.state && store.category == "meyers")) return statehasstores; }); return !statehasstores; } 

这当然有点愚蠢,使用双重否定,并有副作用,为每一个错误的迭代保存“真实”的状态存储,反之亦然,但最终的结果应该是相同的,你不再有这个if语句。

怎么样:

 $.each( myObj, function( key, value ){ ... if( sthg... ){ myObj.somethingWentHorriblyWrong = true; return false; } }); if( myObj.somethingWentHorriblyWrong ){ // ... do something, not forgetting to go: delete myObj.somethingWentHorriblyWrong; } 

PS我最初对$.each(...实际返回)感兴趣,正如它在相关的JQ页面上所说,“该方法返回它的第一个参数,被迭代的对象”,但实际上解决scheme甚至不要求你使用这个事实…

PPS需要一个返回值的函数? 当然包裹在外面的function。