我正在寻找一种方法来停止下划线.js _.each()方法的迭代,但找不到解决方案。如果返回false, jQuery .each()会中断。
是否有方法停止用下划线each()?
_([1,2,3]).each(function(v){
if (v==2) return /*what?*/;
})
我正在寻找一种方法来停止下划线.js _.each()方法的迭代,但找不到解决方案。如果返回false, jQuery .each()会中断。
是否有方法停止用下划线each()?
_([1,2,3]).each(function(v){
if (v==2) return /*what?*/;
})
当前回答
对我来说很有效
var arr2 = _.filter(arr, function(item){
if ( item == 3 ) return item;
});
其他回答
_([1,2,3]).find(function(v){
return v if (v==2);
})
对我来说很有效
var arr2 = _.filter(arr, function(item){
if ( item == 3 ) return item;
});
和其他答案一样,这是不可能的。 下面是第21期中关于断路器的评论
同样值得注意的是,每个循环不能从- to中打破 Break,使用_。找到代替。
http://underscorejs.org/#each
更新:
你实际上可以通过在内部抛出一个错误并在外部捕获它来“打破”:如下所示:
try{
_([1,2,3]).each(function(v){
if (v==2) throw new Error('break');
});
}catch(e){
if(e.message === 'break'){
//break successful
}
}
这显然会对您的代码在循环中触发的任何其他异常产生一些影响,因此请谨慎使用!