Javascript 当为true时退出循环
我使用下面的代码,当条件为真时,我需要退出循环,我尝试了每一个和一些都没有成功,你知道吗 数组已给定,我无法更改它, 当前当条件为真时,循环仍在处理 更新:答案没有帮助,假设我调用了方法内部的过滤器循环,当if条件为true时,我想退出这个方法…尝试break命令(就在console.log(“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') {
您只需使用
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")
}
});
});
});