Циклы

Все что можно вынести из блока цикла
должно быть вынесено

Цикл

Выполнение блока кода по условию.

При boolean true условия блок выполняется.

При boolean false условия выход из блока цикла.

Блок выполняется несколько раз

Итерация - каждое новое выполнение блока кода

Итерация кода происходит с изменением значения некоторой переменной

Как правило в качестве такой переменной используют индекс - счетчик числа итераций.

Анимация на примере цикла For

Задание индекса, условия и шага цикла

 
                    
loop

Выполнение итераций

 
                    
loop 2

Выход из цикла

 
                    
loop 3

While

while (условие ) { блок кода }

 
объявить переменную, 
    которая будет изменяться
    в цикле (индекс)
                    
let index = 0;   

задать условие 
    выхода из цикла
while (index < 10) {
    
    делать что-нибудь
    
    index += 1; 
    изменить значение 
        индекса
};                 
                

Do While

do { блок кода } while (условие )

Код в блоке гарантированно выполнится хотя бы один раз.

 
объявить переменную, 
    которая будет изменяться
    в цикле (индекс)
                    
let index = 0;   

do {
    делать что-нибудь
    
    index += 1; 
    изменить значение 
        индекса
}  
задать условие 
    выхода из цикла
while (index < 10);
                

Цикл используется для проверки пароля

For

for (индекс; условие; изменение индекса ) { блок кода }

Объявление переменной, условие выхода из цикла и изменение индекса сгруппированы внутри круглых скобок

Особый порядок работы круглых скобок:

  • Объявление переменной происходит один раз перед работой цикла
  • Условие выхода из цикла проверяется перед выполнением кода в блоке для каждой итерации
  • Изменение индекса осуществляется после завершения каждой итерации кода в блоке (после выполнения последней строки кода блока).
 
объявить переменную, 
    которая будет изменяться
    в цикле (индекс);

    задать условие 
    выхода из цикла;

    изменить значение 
        индекса;
                    
for (
    let index = 0; 
    index < 10; 
    index += 1
    ) {
    делать что-нибудь
}  

                

For Of

for (переменная; of массив ) { блок кода }

Условие выхода из цикла и шаг задаются автоматически

Переменной поочередно присваивается значение каждого элемента массива

 
объявить переменную, 
 которая будет изменяться
 в цикле (индекс);
    
 определяется массивом
  {задать условие 
   выхода из цикла;
   
  изменить значение 
  индекса;}
               
let arr = [2, 1, 3];

for (let index of arr) {
    console.log(index)
}  
2
1
3
    
                    

Оператор break

Безусловный выход из блока

 
const arr = [1, 2, 3 , 4, 5];
найти число кратное 3
let res = "";
for (
    let i = 0; 
    i < arr.length; 
    i += 1
) {

    if (arr[i] % 3 === 0) {
        res = arr[i];
        break;
выход из блока    
цикл для i = 3 и 4 
    не будет выполняться
    
    }
}             
console.log(res);
3        
                

Оператор continue

Безусловный выход из итерации

 
const arr = [1, 2, 3 , 4, 5];
произведение четных чисел
let mult = 1; 
for (
    let i = 0; 
    i < arr.length; 
    i += 1
) {
    if (arr[i] % 2 !== 0) {
        continue;
итерация для нечетного 
    числа прервется 
         
    }
    mult *= arr[i];
}  
console.log(mult);
8                   
                

Приемы работы с массивом

Проверка на длину массива: индекс всегда должен быть меньше длинны массива

 
let array = [5,4,3,2,1]                    

let beginOfArray = 0; 
начало массива 

let step = 1;
шаг массива                    

let endOfArray = array.length

объявить переменную
let index = beginOfArray;

for (
    index; 
    index < endOfArray;
    index += step;
    ) {
        делать что-то                    
    }

                

Реверсный цикл

 
let array = [5,4,3,2,1]                    

let beginOfArray = 0; 
начало массива 

let step = 1;
шаг массива                    

let endOfArray = array.length

объявить переменную
let index = endOfArray - 1;

for (
    index; 
    index >= beginOfArray;
    index -= step;
    ) {
        делать что-то                    
    }

                

Сумма элементов массива

Произведение элементов массива

Используем размер шага массива

Сумма двухмерного массива

Массив сумм массивов двухмерного массива