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.