如何在下划线中断开 _.each 函数.js
2022-08-30 01:19:33
我正在寻找一种方法来停止下划线.js方法的迭代,但找不到解决方案。jQuery 可能会中断,如果你这样做._.each()
.each()
return false
有没有办法停止下划线每个()?
_([1,2,3]).each(function(v){
if (v==2) return /*what?*/;
})
我正在寻找一种方法来停止下划线.js方法的迭代,但找不到解决方案。jQuery 可能会中断,如果你这样做._.each()
.each()
return false
有没有办法停止下划线每个()?
_([1,2,3]).each(function(v){
if (v==2) return /*what?*/;
})
你不能脱离该方法 - 它模拟本机方法的行为,并且本机不提供转义循环(除了引发异常)。each
forEach
forEach
但是,所有的希望并没有消失!您可以使用 Array.every
方法。:)
从该链接:
every
对数组中存在的每个元素执行一次提供的函数,直到找到返回 false 值的元素。如果找到这样的元素,该方法将立即返回 false。callback
callback
every
换句话说,你可以做一些像这样复杂的事情(链接到JSFiddle):
[1, 2, 3, 4].every(function(n) {
alert(n);
return n !== 3;
});
这将通过 发出警报,然后“中断”出循环。1
3
您正在使用下划线.js,因此您会很高兴地了解到它确实提供了一种方法 - 他们称之为everyever
,但正如该链接所提到的,他们还提供了一个名为 的别名。every
all
更新:
_.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
**旧**
如果要有条件地中断循环,请使用 _.filter 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"}