Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. Примеры foreach break в js

Примеры foreach break в js

Запланировано Прикреплена Закрыта Перенесена JavaScript
javascript
4 Сообщения 3 Постеры 61 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    js
    написал в отредактировано kirilljsx
    #1

    Отмечу сразу, в методе 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 для таких задач и не заниматься велосипедами))

    1 ответ Последний ответ
    0
    • I Не в сети
      I Не в сети
      itrace
      написал отредактировано
      #2

      Мы не ищем легких путей! В принципе, как мне кажется, только программисты способны работать с кодами так, чтобы превратить что-то простое, в живой инструмент для решения сложных задач,а некоторые, могут создавать отдельные вселенные, хоть и виртуальные. А это своего рода - покорение мире. Не считаете?

      1 ответ Последний ответ
      -1
      • JspiJ Не в сети
        JspiJ Не в сети
        Jspi
        js
        написал отредактировано Jspi
        #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
        
        kirilljsxK 1 ответ Последний ответ
        1
        • JspiJ Jspi

          Однако работает это немного по другому.
          Во-первых во втором примере нужно замыкание использовать для инкапсуляции флага.
          Во-вторых все равно у тебя 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
          
          kirilljsxK Не в сети
          kirilljsxK Не в сети
          kirilljsx
          js
          написал отредактировано
          #4

          @Jspi Отличное дополнение, и правда forEach проходится по всем элементам.

          1 ответ Последний ответ
          0

          Категории

          • Главная
          • Новости
          • Фронтенд
          • Бекенд
          • Языки программирования

          Контакты

          • Сотрудничество
          • info@exlends.com
          • Наш чат
          • Наш ТГ канал

          © 2024 - 2025 ExLends, Inc. Все права защищены.

          Политика конфиденциальности
          • Войти

          • Нет учётной записи? Зарегистрироваться

          • Войдите или зарегистрируйтесь для поиска.
          • Первое сообщение
            Последнее сообщение
          0
          • Лента
          • Категории
          • Последние
          • Метки
          • Популярные
          • Пользователи
          • Группы