Существует пять способов перебора массивов. Они включают:

  • Пока цикл
  • Цикл Do-while
  • Для цикла
  • Цикл ForEach
  • Цикл карты

Пока цикл

Оператор [while] выполняет свои операторы до тех пор, пока указанное условие оценивается как true. Синтаксис циклов while показан ниже:

while (condition)
  statement

Если condition становится false, statement в цикле перестает выполняться, и управление переходит к оператору, следующему за циклом.

Проверка условия происходит перед выполнением statement в цикле. Если условие возвращает true, выполняется statement и снова проверяется condition. Если условие возвращает false, выполнение останавливается, и управление передается оператору, следующему за while.

Чтобы выполнить несколько операторов, используйте блочный оператор ({ }), чтобы сгруппировать эти операторы.

Например:

let n = 0;
let x = 0;
while (n < 3) {
  n++;
  x += n;
console.log('value of n', n)
console.log('value of x', x)
}

С каждой итерацией цикл увеличивает n и добавляет это значение к x. Поэтому x и n принимают следующие значения:

  • После первого прохода: n = 1 и x = 1
  • После второго прохода: n = 2 и x = 3
  • После третьего прохода: n = 3 и x = 6

После выполнения третьего прохода условие n < 3 больше не является true, поэтому цикл завершается.

Обратите внимание, что += — это символ конкатенации, который либо складывает/объединяет две строки вместе, либо складывает/суммирует два числа вместе.

DO-во время цикла

Оператор [do...while] повторяется до тех пор, пока указанное условие не станет ложным. Синтаксис цикла do-while показан ниже:

do
  statement
while (condition);

statement всегда выполняется один раз перед проверкой условия. (Чтобы выполнить несколько операторов, используйте блочный оператор ({ }), чтобы сгруппировать эти операторы.)

Если condition равно true, инструкция выполняется снова. В конце каждого выполнения проверяется условие. Когда условие равно false, выполнение останавливается, и управление переходит к оператору, следующему за do...while.

Например,

let i = 0;
do {
  i += 1;
  console.log(i);
} while (i < 5);

Цикл do-while выполняется как минимум один раз и повторяется до тех пор, пока i не станет меньше 5.

Для цикла

Цикл [for] повторяется до тех пор, пока указанное условие не станет ложным. Цикл for в JavaScript похож на цикл for в Java и C. Синтаксис для forloops показан ниже:

for (the declaration or initialization; the condition; the incrementation or decrementation)
  statement

При выполнении цикла for происходит следующее:

  1. Инициализирующее выражение initialization, если оно есть, выполняется. Это выражение обычно инициализирует один или несколько счетчиков циклов, но синтаксис допускает выражение любой степени сложности. Это выражение также может объявлять переменные.
  2. Выражение condition оценивается. Если значение condition истинно, операторы цикла выполняются. В противном случае цикл for завершается. (Если выражение condition полностью опущено, условие считается истинным.)
  3. statement выполняется. Чтобы выполнить несколько операторов, используйте блочный оператор ({ }), чтобы сгруппировать эти операторы.
  4. Если присутствует, выполняется обновленное выражение afterthought.
  5. Управление возвращается к шагу 2.

Например,

for(i = 0; i < 10; i++){
     if(i === 2){
         console.log('2 is my favorite')
           continue
};
    if(i === 8){
         console.log('find out why the loop broke at 8')
           break
};
     console.log('Number' + i)
}

Цикл ForEach

Цикл forEach() — это метод, который выполняет предоставленную функцию один раз для каждого элемента массива. Другими словами, forEach() можно рассматривать как повторяющуюся функцию. Синтаксис цикла forEach() показан ниже:

forEach(callbackFn)
forEach(callbackFn, thisArg)

Метод forEach() является итеративным методом. Он вызывает предоставленную функцию callbackFn один раз для каждого элемента массива в порядке возрастания индекса. forEach() всегда возвращает undefined и не является цепочкой. Типичный вариант использования — выполнение побочных эффектов в конце цепочки.

forEach() не изменяет массив, для которого она вызывается, но функция, представленная как callbackFn, может. Обратите внимание, однако, что длина массива сохраняется перед первым вызовом callbackFn. Поэтому:

  • callbackFn не будет обращаться ни к каким элементам, добавленным за пределами исходной длины массива, когда начался вызов forEach().
  • Изменения в уже посещенных индексах не приводят к повторному вызову callbackFn для них.
  • Если существующий, еще не посещенный элемент массива изменяется с помощью thecallbackFn, его значение, переданное в callbackFn, будет значением на момент посещения этого элемента.

Метод forEach() предполагает, что значение this будет иметь свойство length и свойства с целочисленным ключом.

Невозможно остановить или разорвать цикл forEach(), кроме как выдать исключение. Если вам нужно такое поведение, метод forEach() — неправильный инструмент.

forEach() ожидает синхронную функцию — она не ждет промисов. Убедитесь, что вы знаете о последствиях использования промисов (или асинхронных функций) в качестве forEach обратных вызовов.

callbackFn

Функция, выполняемая для каждого элемента массива. Его возвращаемое значение отбрасывается. Функция вызывается со следующими аргументами:

element

Текущий элемент обрабатывается в массиве.

index

Индекс текущего обрабатываемого элемента в массиве.

array

Был вызван массив forEach().

thisArg(необязательно)

Значение для использования в качестве this при выполнении callbackFn.

Например,

const numbers = ['a', 'b', 'c'];

numbers.forEach(number => console.log(number));

// Expected output: "a"
// Expected output: "b"
// Expected output: "c"

Обратите внимание, что метод forEach() возвращает элементы массива.

Цикл карты

Метод map() создает и возвращает новый массив, заполненный результатами вызова предоставленной функции для каждого элемента в вызывающем массиве. Синтаксис цикла карты показан ниже:

map(callbackFn)
map(callbackFn, thisArg)

Метод map() является итеративным методом. Он вызывает предоставленную функцию callbackFn один раз для каждого элемента в массиве и строит новый массив из результатов.

callbackFn вызывается только для индексов массива, которым присвоены значения.

Метод map() является методом копирования. Это не изменяет this. Однако функция, представленная как callbackFn, может изменять массив. Обратите внимание, однако, что длина массива сохраняется перед первым вызовом callbackFn. Поэтому:

  • callbackFn не будет обращаться ни к каким элементам, добавленным за пределами исходной длины массива, когда начался вызов map().
  • Изменения в уже посещенных индексах не приводят к повторному вызову callbackFn для них.
  • Если существующий, еще не посещенный элемент массива изменяется на callbackFn, его значение, переданное в callbackFn, будет значением на момент посещения этого элемента.

Метод map() предполагает, что значение this будет иметь свойство length и свойства с целочисленным ключом.

callbackFn

Функция, выполняемая для каждого элемента массива. Его возвращаемое значение добавляется как один элемент в новый массив. Функция вызывается со следующими аргументами:

element

Текущий элемент обрабатывается в массиве.

index

Индекс текущего обрабатываемого элемента в массиве.

array

Был вызван массив map().

thisArg (необязательно)

Значение, используемое как this при выполнении callbackFn.

Спасибо за прочтение