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
однако среди них есть некоторые различия.
1. forEach()
более лаконичен в записи и уже по умолчанию является встроенным методом любого массива.
2. forEach()
проигнорирует пропущенный элемент массива, for
выдаст undefined
.
3. В forEach()
не будут работать директивы прерывания break
и continue
, в for
наоборот.
4. forEach()
взаимодействует с элементами массива строго по порядку, в свой очередь используя for
, например, можно обойти элементы в обратном порядке.
1. Элементы, которые должен обойти forEach()
определяются до первого вызова функции, всё что будет добавлено после метод не обойдёт.
2. Если элемент массива будет изменён в процессе работы forEach()
, то в callback функцию попадёт то значение, которое будет иметь элемент на момент его обхода.
3. Элемент удаленный до его обхода, учтён не будет.
4. В forEach()
колбэк-функция не будет вызвана для пропущенных элементов, но сработает для пустых, равных undefined
или NaN
.