Иногда при работе с JavaScript возникает необходимость прервать выполнение метода Array.forEach
при достижении определенного условия. Например, имеется массив чисел, и нужно остановить цикл на первом числе, равном 1.
[1,2,3].forEach(function(el) { if(el === 1) break; });
Однако такой подход приводит к ошибке, поскольку оператор break
не может быть использован внутри функций обратного вызова. Попытка применить return
или return false
также не дает ожидаемого результата, поскольку они просто пропускают текущую итерацию и переходят к следующей.
Для решения этой проблемы можно использовать методы массива, которые поддерживают прерывание: Array.some
или Array.every
. Array.some
прерывает выполнение, когда функция обратного вызова возвращает истинное значение, в то время как Array.every
останавливается при первом ложном значении.
Вот как можно записать пример выше, используя Array.some
:
[1,2,3].some(function(el) { if(el === 1) return true; });
В этом случае цикл будет остановлен на первом элементе, равном 1. Можно увидеть, что такой подход ведет себя аналогично использованию break
в цикле for
или while
.
Таким образом, даже несмотря на то, что метод Array.forEach
не поддерживает прерывание напрямую, существуют альтернативные способы достижения этой цели.
Добавить комментарий