forEach()

Содержание

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


Синтаксис

  
  arr = [3,2,6,9]

  arr.forEach(element => {
    console.log(element)
  })    
  

В данном примере element это элемент массива arr, а стрелочная функция выступает в качестве колбэк-функции, в результате получим в console все цифры.

В качестве параметров метода также можно указать индекс и сам массив.

  
  let arr = [3,2,6,9]

  arr.forEach((element, index, array) => {
    console.log(element)
    console.log(index)
    console.log(array)
  })    
  

element - элемент массива, при вызове функции будет использован в качестве значения this, если element пропустить this будет равно undefined.

index - индекс элемента.

array - массив с которым взаимодействует метод.

Все параметры необязательные, а названия не строгие и их можно именовать на своё усмотрение.

Функцию можно вынести отдельно, тогда запись выглядит так.

  
  let arr = [3,2,6,9]
  
  arr.forEach(addToConsole)
  
  function addToConsole(element, index, array){
    console.log(element)
  }    
  

Такая запись тоже будет корректной.

  
  let arr = [3,2,6,9]

  arr.forEach(function addToConsole(element, index, array) {
    console.log(element)
  })
  

Отличие forEach() от цикла for

Для того, чтобы провзаимодействовать с элементами массива подойдет, как метод forEach(), так и цикл for однако среди них есть некоторые различия.

1. forEach() более лаконичен в записи и уже по умолчанию является встроенным методом любого массива.

2. forEach() проигнорирует пропущенный элемент массива, for выдаст undefined.

3. В forEach() не будут работать директивы прерывания break и continue, в for наоборот.

4. forEach() взаимодействует с элементами массива строго по порядку, в свой очередь используя for, например, можно обойти элементы в обратном порядке.

Особенности работы forEach()

1. Элементы, которые должен обойти forEach() определяются до первого вызова функции, всё что будет добавлено после метод не обойдёт.

2. Если элемент массива будет изменён в процессе работы forEach(), то в callback функцию попадёт то значение, которое будет иметь элемент на момент его обхода.

3. Элемент удаленный до его обхода, учтён не будет.

4. В forEach() колбэк-функция не будет вызвана для пропущенных элементов, но сработает для пустых, равных undefined или NaN.