Array.prototype.forEach()

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

Wywołuje po kolei funkcję dla każdego elementu tablicy. Służy do tego, żeby coś z elementami zrobić (wypisać, zmienić stronę), a nie do uzyskania nowej tablicy.

Parametry

  • callback(element, index, array) – funkcja wywoływana dla każdego elementu: element, jego indeks i cała tablica (indeks i tablica są opcjonalne).
  • thisArg – opcjonalnie, wartość this wewnątrz funkcji.

Wartość zwracana

undefined – wyniku nie da się dalej łączyć w łańcuch.

Przykłady

const cities = ['Warszawa', 'Kraków', 'Gdańsk'];
cities.forEach((city, i) => {
  console.log(i, city);
});

Wynik:

0 Warszawa
1 Kraków
2 Gdańsk

Pętli nie da się zakończyć przez break – return kończy tylko bieżące wywołanie funkcji. Do wcześniejszego wyjścia użyj for...of:

const numbers = [3, 8, 12, 5];
numbers.forEach((n) => {
  if (n > 10) return;
  console.log('forEach', n);
});
for (const n of numbers) {
  if (n > 10) break;
  console.log('for...of', n);
}

Wynik:

forEach 3
forEach 8
forEach 5
for...of 3
for...of 8

Na co uważać

  • forEach() nie czeka na funkcje async: array.forEach(async (x) => await save(x)) uruchamia wszystkie wywołania naraz i idzie dalej, zanim się skończą. for (const x of array) await save(x); przetwarza je po kolei, await Promise.all(array.map(save)) równocześnie.
  • Pomija puste miejsca tablicy rzadkiej.
  • Lista elementów z querySelectorAll() (NodeList) ma własną metodę forEach(), HTMLCollection (np. element.children) jej nie ma.

Obsługa w przeglądarkach

Baseline – szeroko dostępne: działa we wszystkich popularnych przeglądarkach, i to od dawna (najpóźniej od 2015 roku). Od wersji: Chrome 1, Firefox 1.5, Safari 3; Node.js 0.10.0. Stan: październik 2026 (MDN browser-compat-data).

Zobacz też:
Array.prototype.map()
Array.prototype.some()
Array.prototype.every()
async function