Learn JavaScript

forEach() - метод для перебора элементов массива в JavaScript

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

Это один из самых популярных способов пройтись по массиву, когда нужно что-то сделать с каждым элементом, но не нужно собирать новый массив.

Синтаксис

array.forEach(callback)
array.forEach(callback, thisArg)

callback - функция, которая будет вызвана для каждого элемента массива.

Что делает forEach()

Метод проходит по массиву слева направо и вызывает callback для каждого элемента.

const numbers = [1, 2, 3];

numbers.forEach((value) => {
  console.log(value);
});

Результат:

1
2
3

Аргументы callback

Callback в forEach() может получать до трёх аргументов:

array.forEach((element, index, array) => {
  // ...
});
  • element - текущий элемент
  • index - индекс текущего элемента
  • array - сам массив целиком

Пример:

const fruits = ["apple", "banana", "orange"];

fruits.forEach((fruit, index) => {
  console.log(index, fruit);
});

Что возвращает forEach()

forEach() всегда возвращает undefined.

const numbers = [1, 2, 3];
const result = numbers.forEach((value) => {
  console.log(value);
});

console.log(result); // undefined

Это очень важный момент: forEach() не создаёт новый массив.

forEach() и map()

Эти методы часто путают.

const numbers = [1, 2, 3];
const result = numbers.map((value) => value * 2);

console.log(result); // [2, 4, 6]

map() возвращает новый массив.

forEach() нужен не для преобразования, а для побочных действий: например, вывести что-то в консоль, обновить счётчик или отправить данные дальше.

Изменение массива внутри forEach()

Сам метод forEach() не меняет массив, но callback внутри него может это сделать.

const numbers = [1, 2, 3];

numbers.forEach((value, index, array) => {
  array[index] = value * 2;
});

console.log(numbers); // [2, 4, 6]

То есть метод сам по себе не мутирующий, но код внутри callback может менять данные.

forEach() нельзя остановить через break

forEach() не является обычным циклом, поэтому break и continue здесь не работают.

const numbers = [1, 2, 3, 4];

numbers.forEach((value) => {
  console.log(value);
});

Если нужно остановить обход раньше, чаще используют:

  • for...of
  • some()
  • every()

Пустые слоты

forEach() пропускает пустые слоты в массиве.

const arr = Array(3);

arr.forEach((value) => {
  console.log(value);
});

Здесь callback вообще не вызовется.

Это важно помнить при работе с массивами, созданными через Array(length).

Когда это полезно

forEach() удобно использовать, когда:

  • нужно пройтись по всем элементам массива
  • не нужен новый массив как результат
  • внутри нужно выполнить побочное действие

Пример:

const users = ["Anna", "Ivan", "Oleg"];

users.forEach((user) => {
  console.log(`Привет, ${user}`);
});

Частые ошибки

Думать, что forEach() возвращает новый массив

const numbers = [1, 2, 3];
const result = numbers.forEach((value) => value * 2);

console.log(result); // undefined

Если нужен новый массив, обычно используют map().

Пытаться остановить цикл через break

const numbers = [1, 2, 3];

numbers.forEach((value) => {
  // break; // Ошибка
});

Для досрочной остановки forEach() не подходит.

Забывать, что пустые слоты пропускаются

const arr = Array(2);

arr.forEach((value) => {
  console.log(value);
});

Callback здесь не выполнится ни разу.

Быстрая памятка

  • forEach() перебирает элементы массива
  • callback может получать element, index и array
  • forEach() возвращает undefined
  • метод не создаёт новый массив
  • forEach() нельзя остановить через break

Коротко

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