我是新手强调的。对于外部_each循环,我希望只计算一次转换次数。换句话说,我希望它在第一次转换后停止.y ++。这可能吗?
_.each(conversions, function(conversion){
_.each(user.apilog, function(event){
if( conversion.conditional(event) ){
conversion.y++;
}
})
})
答案 0 :(得分:2)
引用下划线文档:
同样值得注意的是,每个循环都不能被打破 - 打破,改为使用_.find。
所以不,它不能被破坏 - 他们的建议是使用.find
- 它会打破你从它返回的第一个truthy
值 - 这对嵌套<没有帮助em> each 虽然如此,你可以设置一个标志:
var flag = false;;
_.find(conversions, function(conversion){
_.find(user.apilog, function(event){
if( conversion.conditional(event) ){
conversion.y++;
return flag = true;
}
});
return flag;
});
或者不使用嵌套的_.each
循环,一种优雅的方法是使用cartesian product:
var prod = cartProd(conversations, user.apilog);
_.find(prod, function(item){
return item[0].conditional(item[1]); // will break on find
});
虽然一个普通的JS for循环也可以工作,但可能会更快。