Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
06 Июл 2023
1 мин
124

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

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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