Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
06 Июл 2023
1 мин
120

Короткое замыкание в Array.forEach, аналогичное вызову break

Иногда при работе с JavaScript возникает необходимость прервать выполнение метода Array.forEach при достижении определенного условия. Например, имеется массив

Иногда при работе с 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 не поддерживает прерывание напрямую, существуют альтернативные способы достижения этой цели.

Добавить комментарий