Javascript 当为true时退出循环

Javascript 当为true时退出循环,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,我使用下面的代码,当条件为真时,我需要退出循环,我尝试了每一个和一些都没有成功,你知道吗 数组已给定,我无法更改它, 当前当条件为真时,循环仍在处理 更新:答案没有帮助,假设我调用了方法内部的过滤器循环,当if条件为true时,我想退出这个方法…尝试break命令(就在console.log(“true”)下面) 中断 您只需使用return退出\每个函数即可 _.every(provider, function (config) { if (config.pa === 'aa') {

我使用下面的代码,当条件为真时,我需要退出循环,我尝试了每一个和一些都没有成功,你知道吗

数组已给定,我无法更改它, 当前当条件为真时,循环仍在处理

更新:答案没有帮助,假设我调用了方法内部的过滤器循环,当if条件为true时,我想退出这个方法…

尝试break命令(就在console.log(“true”)下面)

中断


您只需使用
return
退出
\每个
函数即可

_.every(provider, function (config) {
    if (config.pa === 'aa') {
        //now need to exit
        console.log("true")
        return; // --> just return
    }
});

您应该看看JavaScript中的语句

_.filter(array, function (config) {
  config['prov'].some(function (provider) {
    _.every(provider, function (config) {
      if (config.pa === 'aa') {
        //now need to exit
        break; // exits the if statement
        console.log("true")
      }
    });
  });
});

在这里,你没有使用循环。你使用的是高阶函数<代码>中断,
返回
继续
将毫无帮助

这些高阶函数的思想是,您不必太担心它们何时中断循环:这种担心落在库函数的实现上。事实上,这正是此实现的功能:

因此,与其问“我如何打破循环”,不如问你是否对所表达的过滤器的正确性有信心。事实上,在我看来,这里的链式函数中可能有太多的嵌套级别,但我不确定您试图实现什么,因此我不能对此断言

需要阅读函数文档的另一个提示是,
each
中的谓词需要返回一个值。现在,您的始终返回
未定义的
。类似地,Javascript在默认情况下不会返回函数最后一个表达式的值。因此,
每个
config.prov.some(…
应该在
返回
指令之前


另一种解决方法是实际使用好的Javascript循环,如果你更习惯于过程式而不是函数式,那么就用简洁来换取清晰;这样你就可以使用内置的。如果你想打破一个外部循环,带标签的循环可能会有帮助。

你不能在技术上使用打断下划线循环方法请更正,但如果(稍后),他在循环后还有一些代码需要执行,这也没有帮助。Return会立即退出该函数。我不确定我是否收到你的评论,你能举个例子吗?问题是如何中断迭代,
Return
将完全执行该操作,并在循环结束后从行继续(
每一个
)循环。与使用
for
循环和
break
@StoyanDekov没有太大区别-谢谢,但是在我返回后它不起作用。循环仍在为附加值运行,我想退出这个循环…假设我调用了过滤器isnide方法,使用布尔值true退出这个方法。这个答案是完全错误的。使用return只会有谓词return undefined,这对于
每一个
来说,都相当于一个布尔值false。这与打破循环无关!我在下面的回答中发布了一个命题,尽管我并不打算为您编写代码。;)谢谢,但这只是退出。如果我想退出所有循环,假设我调用过滤器isnide方法,用布尔值true退出这个方法。另外,当我像你提到的那样放入break时,我得到了错误非法break语句。啊,对不起,我误解了这个问题。@Gunnar-答案都不起作用,你知道吗?这是因为没有人真正得到它你想做什么。我已经在这个方向上修改了我的答案……你能用一句话解释一下这些循环的目的吗?你不是在对列表进行
筛选,检查列表中的
某个
事物是否通过一个条件,或者检查列表中的
每个
项是否通过一个条件,因为你没有返回语句是在谓词中,并且没有尝试使用这些返回值。代码的意图是什么?答案确实有帮助:您正在思考过程性和函数性。因此,您必须开始思考函数性,或者编写过程性,这两者都是我明确建议的。我们可以向您展示水,但没有人可以强迫您喝我的水t、 (经过编辑,在我再次阅读问题后,关于OP的重点可能会遗漏实际要点)
_.filter(array, function (config) {
  config['prov'].some(function (provider) {
    _.every(provider, function (config) {
      if (config.pa === 'aa') {
        //now need to exit
        break; // exits the if statement
        console.log("true")
      }
    });
  });
});