如何突破.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; } 
	
有创意:
 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。