function(){
_.forEach(listOfSomething, function (something) {
if(someCondition){
return false
}
});
return true;
}
看起来很简单 - 尝试检查每个项目是否有某些条件,如果任何项目退出函数并且返回false则不满足。当循环完成而没有退出时,返回true。
始终返回true,尝试使用控制台日志记录,它确实命中了"返回false"点。
我是否遗漏了一些关于js如何工作的明显内容或者这是一个lodash的事情?
答案 0 :(得分:8)
您缺少的是return false
语句与return true
语句不同的功能。您可能希望使用不同的lodash方法,例如any
/ some
。
function(){
return _.some(listOfSomething, function (something) {
return someCondition;
});
}
答案 1 :(得分:3)
那是因为有2个函数,第二个函数的返回不会使第一个函数返回。您应该将变量设置为true,并在满足条件时将其更改为false:
function(){
var condition = true;
_.forEach(listOfSomething, function (something) {
if(someCondition){
condition = false;
return;
}
});
return condition;
}
答案 2 :(得分:1)
快速浏览一下,"返回"将从列表的每个元素执行一次的内部函数返回false(通过forEach),而不是退出外部函数
事实上,我认为forEach将继续执行(不确定它的语义,也许它会查找" false"它调用的函数打破循环的结果)
但是在forEach为true之前设置一个名为result的变量,在if中设置为false,然后在结尾处有一个返回结果
这应该有用,但你应该查看有关forEach的文档,看看是否真的做了&#34;返回false&#34;会破坏循环,或者是否有一些破坏或类似的命令(可能是_.break();但我不确定那是什么&#34; _&#34;实例是)< / p>