"返回" out of Function,如果声明里面Lodash forEach()

时间:2015-10-23 21:08:25

标签: javascript lodash

function(){
    _.forEach(listOfSomething, function (something) {
      if(someCondition){
        return false
      }
    });
    return true;
}

看起来很简单 - 尝试检查每个项目是否有某些条件,如果任何项目退出函数并且返回false则不满足。当循环完成而没有退出时,返回true。

始终返回true,尝试使用控制台日志记录,它确实命中了"返回false"点。

我是否遗漏了一些关于js如何工作的明显内容或者这是一个lodash的事情?

3 个答案:

答案 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>