Итерация в JavaScript

Итерация - это один шаг повторения. Если цикл выполнил тело пять раз, значит прошло пять итераций.

for (let i = 1; i <= 3; i++) {
  console.log('Итерация ' + i);
}

Результат:

Итерация 1
Итерация 2
Итерация 3

Каждый вывод в консоль произошел на отдельной итерации.

Что такое итерация

Когда цикл повторяет одно и то же действие, каждое выполнение тела цикла называют итерацией.

for (let i = 0; i < 4; i++) {
  console.log(i);
}

Здесь будет четыре итерации:

0
1
2
3

На первой итерации i равно 0, на второй - 1, на третьей - 2, на четвертой - 3.

Итерация в цикле for

В цикле for обычно хорошо видно, как меняется состояние от итерации к итерации.

for (let i = 0; i < 3; i++) {
  console.log('Текущий i: ' + i);
}

Работа цикла идет по шагам:

1. создается счетчик i со значением 0;

2. проверяется условие i < 3;

3. выполняется тело цикла;

4. выполняется шаг i++;

5. цикл снова проверяет условие.

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

Текущее значение

При переборе массива итерацией называют обработку одного элемента.

let languages = ['HTML', 'CSS', 'JavaScript'];

for (let language of languages) {
  console.log(language);
}

Здесь будет три итерации, потому что в массиве три элемента.

На первой итерации language равно ‘HTML’, на второй - ‘CSS’, на третьей - ‘JavaScript’.

Значение, которое доступно прямо сейчас, часто называют текущим значением или текущим элементом.

Индекс итерации

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

let fruits = ['яблоко', 'банан', 'груша'];

for (let i = 0; i < fruits.length; i++) {
  console.log(i + ': ' + fruits[i]);
}

Результат:

0: яблоко
1: банан
2: груша

Здесь i одновременно выступает счетчиком и индексом текущего элемента.

Пропуск итерации

Иногда текущую итерацию нужно пропустить. Для этого используют continue.

for (let i = 1; i <= 5; i++) {
  if (i === 3) {
    continue;
  }

  console.log(i);
}

Результат:

1
2
4
5

Когда i стало равно 3, текущая итерация завершилась раньше. Цикл не остановился полностью, а перешел к следующему шагу.

Итерация и перебор

Слова «итерация» и «перебор» часто встречаются рядом.

Перебор - это весь процесс прохождения по значениям.

Итерация - это один шаг внутри этого процесса.

let numbers = [2, 4, 6];

for (let number of numbers) {
  console.log(number);
}

Весь цикл - это перебор массива numbers. Каждый отдельный проход по числу 2, 4 и 6 - это итерация.

Дальше этот термин будет встречаться в темах про итерируемые объекты, Symbol.iterator и метод next().

Итого

1. Итерация - это один шаг повторения в цикле.

2. Если тело цикла выполнилось пять раз, значит прошло пять итераций.

3. При переборе массива одна итерация обычно соответствует обработке одного элемента.

4. Текущий элемент - это значение, с которым цикл работает на данной итерации.

5. continue завершает текущую итерацию и переводит цикл к следующей.