我正在寻找一种方法来停止下划线.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?*/;
})
当前回答
更新:
_。Find会更好,因为它会在找到元素时跳出循环:
var searchArr = [{id:1,text:"foo"},{id:2,text:"bar"}];
var count = 0;
var filteredEl = _.find(searchArr,function(arrEl){
count = count +1;
if(arrEl.id === 1 ){
return arrEl;
}
});
console.log(filteredEl);
//since we are searching the first element in the array, the count will be one
console.log(count);
//output: filteredEl : {id:1,text:"foo"} , count: 1
**老**
如果你想有条件地跳出循环,使用_。过滤API而不是_.each。下面是一个代码片段
var searchArr = [{id:1,text:"foo"},{id:2,text:"bar"}];
var filteredEl = _.filter(searchArr,function(arrEl){
if(arrEl.id === 1 ){
return arrEl;
}
});
console.log(filteredEl);
//output: {id:1,text:"foo"}
其他回答
_([1,2,3]).find(function(v){
return v if (v==2);
})
同样值得注意的是,每个循环不能从- to中打破 Break,使用_。找到代替。
http://underscorejs.org/#each
我相信如果你的数组实际上是一个对象,你可以返回一个空对象。
_.({1,2,3,4,5}).each(function(v){
if(v===3) return {};
});
你不能用下划线打断forEach,因为它模仿EcmaScript 5本机行为。
你可以看看_。Some而不是_.each。 _。一旦谓词为真,就停止遍历列表。 结果可以存储在外部变量中。
_.some([1, 2, 3], function(v) {
if (v == 2) return true;
})
看到http://underscorejs.org/一些