Примеры foreach break в js
-
Отмечу сразу, в методе
forEach
нету стандартного оператораbreak
как в том жеswitch
. Однако мы ж погроммистыи можем сделать имитацию прерывания.
Пропуск или же аналог
continue
:const arr = [1, 2, 3, 4, 5]; arr.forEach(num => { if (num % 2 === 0) return; // пропускаем четные console.log(item); // выведет 1, 3, 5 });
А вот пример ручного
break
:const arr = [1, 2, 3, 4, 5]; let stopped = false; // Создаем переменную с булевом false arr.forEach(num => { if (stopped) return; // хитро неправдали? if (item == 3) { stopped = true; // флаг остановки return; } console.log(item); // выведет 1, 2 });
Конечно многие скажут что можно использовать перебор массива через
for
и там просто указатьi == 3
, но мы же говорим оforEach
верно?Ну а вообще лучше конечно использовать цикл
for
для таких задач и не заниматься велосипедами)) -
Мы не ищем легких путей! В принципе, как мне кажется, только программисты способны работать с кодами так, чтобы превратить что-то простое, в живой инструмент для решения сложных задач,а некоторые, могут создавать отдельные вселенные, хоть и виртуальные. А это своего рода - покорение мире. Не считаете?
-
Однако работает это немного по другому.
Во-первых во втором примере нужно замыкание использовать для инкапсуляции флага.
Во-вторых все равно у тебяforEach
проходит по каждому элементу, а break завершает вообще команду цикла.
В-третьих напомню, что если eslint или религия не позволяет пользоваться этим оператором, то для этого есть другие “православные” операторы:Array.prototype.some
- метод some перебирает элементы массива до тех пор, пока колбэк не вернёт true — после этого итерация прерывается.
const arr = [1, 2, 3, 4, 5]; arr.some(item => { console.log(item); if (item === 3) { // вернув true, мы прерываем дальнейшую итерацию return true; } return false; }); // Вывод: 1, 2, 3
Array.prototype.every
- Метод every перебирает до тех пор, пока колбэк возвращает true. Как только он вернёт false, цикл остановится.
const arr = [1, 2, 3, 4, 5]; arr.every(item => { console.log(item); if (item === 3) { // возвращаем false, чтобы остановить return false; } return true; }); // Вывод: 1, 2, 3
-
Однако работает это немного по другому.
Во-первых во втором примере нужно замыкание использовать для инкапсуляции флага.
Во-вторых все равно у тебяforEach
проходит по каждому элементу, а break завершает вообще команду цикла.
В-третьих напомню, что если eslint или религия не позволяет пользоваться этим оператором, то для этого есть другие “православные” операторы:Array.prototype.some
- метод some перебирает элементы массива до тех пор, пока колбэк не вернёт true — после этого итерация прерывается.
const arr = [1, 2, 3, 4, 5]; arr.some(item => { console.log(item); if (item === 3) { // вернув true, мы прерываем дальнейшую итерацию return true; } return false; }); // Вывод: 1, 2, 3
Array.prototype.every
- Метод every перебирает до тех пор, пока колбэк возвращает true. Как только он вернёт false, цикл остановится.
const arr = [1, 2, 3, 4, 5]; arr.every(item => { console.log(item); if (item === 3) { // возвращаем false, чтобы остановить return false; } return true; }); // Вывод: 1, 2, 3
@Jspi Отличное дополнение, и правда
forEach
проходится по всем элементам.
© 2024 - 2025 ExLends, Inc. Все права защищены.