Page 104 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 104

Предположим, например, что определение принадлежности числа к простым от­
       носительно дорого с точки зрения вычислений. Если вы ищете первый множитель
       в списке из тысяч чисел, прямолинейный подход мог бы быть таким.
       let  firstPrime  =  null ;
       for ( l et  n  o f   ЫgArrayOfNumЬers )
                                            l
           if ( isPrime ( n )   & &   firstPrime   nu l )   firstPrime  =  n ;

          Если в ЬigArrayOfNwnЬers есть миллион чисел и только последнее является прос­
       тым (что вам неизвестно), этот подход был бы прекрасен. Но что если простым яв­
       ляется первое число? Или пятое, или пятидесятое? Вы проверили бы миллион чисел
       на принадлежность к простым, хотя могли бы остановиться в самом начале! Звучит
       удручающе. Мы можем использовать оператор break, как только найдем искомое.
                         l
       let  firstPrime  =  nu l ;
       for ( l e t   n  of  ЫgArrayOfNumЬers)
           i f ( isPrime ( n ) )  {
               firstPrime  =  n ;
               break;



          Если это  цикл  в  функции,  вместо b r eak мы могли бы использовать оператор
       return.

       И спользова     н и  е  з н  ачения  и н  декса
       после завершения цикла
          Иногда важнейшим результатом цикла является значение индексной переменной
       после преждевременного завершении цикла оператором break. Мы можем исполь­
       зовать в своих интересах тот факт, что по завершении цикла for индексная перемен­
       ная сохраняет свое значение. Если вы используете эту схему, имейте в виду случай,
       когда цикл завершается успешно и без break. Например, мы можем использовать эту
       схему для нахождения индекса первого простого числа в нашем массиве.
       let  i  =  О ;
       for ( ;   i  <  ЫgArrayOfNumЬers . length;  i++ )  {
           i f ( isPrime (ЬigArrayOfNumЬers [ i ] )  )    break;
                                                                    л
       i f ( i   ===  ЫgArrayOfNumЬers . lengt )   console . l o ( ' Heт  простых  чисе ! ' ) ;
                                      h
                                                  g
                      g
       else  console . l o ( ' Пepвoe  простое  число  находится  в  $ { i )   элементе  массива . ' ) ;
       И спольз   о в а н и е    убывающих  и н  дексов
       п р и   изменен и и   списков

          Изменение списка в цикле по его элементам может быть очень сложным, поскольку
       при изменении списка могут измениться и условия выхода из цикла. В лучшем случае


                                              Популярные схемы управления потоком   1 0 3
   99   100   101   102   103   104   105   106   107   108   109