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ść
thiswewną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