如何在Javascript中从foreach循环中跳出

28

我是JavaScript的新手。我有一个变量,其详细信息如下:

var result = false;
[{"a": "1","b": null},{"a": "2","b": 5}].forEach(function(call){
    console.log(call);
    var a = call['a'];
    var b = call['b'];
    if(a == null || b == null){
        result = false
        break;
    }
});

如果存在一个键的值为NULL,我想要终止循环。我该如何做?


1
什么循环?是 for (var i = 0... 这样的字面量,还是 .forEach 方法? - VLAZ
什么循环?我看到了JSON但没有JavaScript。 - Igor
1
在检查 NULL 值的 if 语句内部的 for 循环中只需输入 break; 即可。 - Nicholas Siegmundt
2
更新后:是的,这是Robbie报告的重复问题。 - VLAZ
1
我查看了https://dev59.com/EXE85IYBdhLWcg3wvGAR链接,但是我无法找出解决方案。给定的链接中有一个简单(int,string)数组。在我的数组中,我有对象,并且需要检查任何属性是否具有空值。 - Sahil
var result = arr.every(obj => obj.a ===null || obj.b === null) 这就是了。第二个答案已经提到了 .every,你只需要进行检查即可。 - VLAZ
1个回答

75

使用for循环而不是.forEach()

var myObj = [{"a": "1","b": null},{"a": "2","b": 5}]
var result = false

for(var call of myObj) {
    console.log(call)
    
    var a = call['a'], b = call['b']
     
    if(a == null || b == null) {
        result = false
        break
    }
}

1
如果只能使用 foreach,那该怎么办? - zwcloud
2
为什么你只能使用.forEach - Fathy
for in 对于 Map 不起作用。在 ES5 中不可用 for offor(i=0; i<n; i++) 需要先获取值,即 map.values(),我不确定它是否会影响性能,因为我们的 WebGL 应用程序需要每帧循环遍历地图值。 - zwcloud
4
如果您关注性能,请使用.forEach并在获得结果后忽略下一次调用,这是在ES5中实现的最有效方法。请注意,ES5没有Map,因此您可能正在使用像core-js这样的polyfill,本机对象({})在这种情况下更快,并且可以使用for(var key in object)进行迭代。 - Fathy
1
你也可以改变数组的长度,这会导致 forEach 中断。 - kumail
最好的想法是使用.every而不是.forEach,因为它的行为完全相同,只是在返回一个假值时会跳出循环。来源 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接