`forEach` 函数中的 `return` 关键字是什么意思?

IT技术 javascript arrays
2021-01-29 03:05:20

$('button').click(function () {
   [1, 2, 3, 4, 5].forEach(function (n) {
      if (n == 3) {
         // it should break out here and doesn't alert anything after
         return false
      }
      alert(n)      
   })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click me</button>

我的问题:为什么尽管我打电话,它仍然提醒下一个号码return就像:忽略下面的代码并继续下一个元素

2个回答

来自Mozilla 开发者网络

forEach()除了抛出异常之外,没有其他方法可以停止或中断循环。如果您需要这种行为,则该forEach()方法是错误的工具。

提前终止可以通过以下方式完成:

其他 Array 方法:every()some()find()findIndex()使用返回真值的谓词测试数组元素,以确定是否需要进一步迭代。

这似乎并没有回答循环return在实践中实际做什么的问题forEach,但我想下一个答案有所帮助。
2021-03-12 03:05:20
我同意@RonenCypis ...并建议您使用 some()
2021-03-15 03:05:20
每个人都有一个计划,直到new Array(5)出现......(new Array(5)).every(e => e === "maybe for loop + break wasn't such a bad idea after all?")由于稀疏数组而产生令人惊讶的结果。
2021-03-18 03:05:20
使用forEach, 并抛出错误来停止迭代是一种非常糟糕的做法,而且是一种真正的矫枉过正。在您的情况下,您真的不想迭代所有数组(forEach ...),但您想运行直到满足特定语句。您应该为它使用一个简单的循环 ( while, for, for in, do while)。
2021-03-24 03:05:20

return退出当前功能,但反复不断,所以你得到的“下一个”项目是跳过if和警报的4 ...

如果你需要停止循环,你应该for像这样使用一个简单的循环:

$('button').click(function () {
   var arr = [1, 2, 3, 4, 5];
   for(var i = 0; i < arr.length; i++) {
     var n = arr[i]; 
     if (n == 3) {
         break;
      }
      alert(n);
   })
})

您可以在此处阅读有关 js break & continue 的更多信息:http : //www.w3schools.com/js/js_break.asp

您已经在示例中声明了数组,我只是添加了一个引用 (var arr) 以便于访问。您还可以将for循环更改for in, 或while... 所有这些选项都更好,而且比创建新函数更快,并在此处的其他示例中抛出错误。性能明智,代码干净......无论如何祝你好运:-)
2021-03-13 03:05:20
您需要先声明数组。您想在数组长度内使用循环。您需要一个索引来访问数组元素..... 很多事情:) 这就是我的意思
2021-03-21 03:05:20
你是什​​么意思???为了便于理解,我这样写...代码可能会缩短一点,但它完全符合您的要求,无需像此处的其他一些答案一样对数组进行额外迭代:-)
2021-03-28 03:05:20
这个答案澄清了我的确切问题,即有时在forEach循环内返回是否仍然有意义,当您不希望在特定条件下执行循环逻辑的其余部分时,它绝对会这样做!
2021-04-04 03:05:20