$ ('кнопка'). Click (function () {
   [1, 2, 3, 4, 5] .forEach (function (n) {
      if (n == 3) {
         // он должен вырваться здесь и ни о чем не предупреждать после
         вернуть ложь
      }
      предупреждение (n)
   })
})

Мой вопрос: Почему по-прежнему предупреждает следующий номер, хотя я звоню , возвращаю? Точно так же: Игнорируйте приведенный ниже код и переходите к следующему элементу

Tân

Ответов: 2

Ответы (2)

Из сети разработчиков Mozilla:

Нет другого способа остановить или прервать цикл forEach (), кроме как выбросить исключение. Если вам нужно такое поведение, то метод forEach () - неправильный инструмент.

Досрочное расторжение может быть выполнено с помощью:

Другие методы массива: every (), some (), find ()и findIndex () проверяют элементы массива с помощью предиката, возвращающего истинное значение, чтобы определить, требуется ли дальнейшая итерация.

Команда return выходит из функции current, но итерации продолжаются, поэтому вы получаете «следующий» элемент, который пропускает if и предупреждает 4 ...

Если вам нужно остановить цикл, вы должны просто использовать простой для цикл, например:

$('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

2022 WebDevInsider