Pętla for w JavaScript i jaką pętlę wybrać

Porównanie pętli w JavaScript

Pętla for w JavaScript i wszystkie inne pętle, porównane na żywo | We.Inc

for, for...of, for...in, while, do...while i forEach obok siebie. Uruchom każdą pętlę na tablicy, stringu, obiekcie lub Map i zobacz wynik albo błąd, który rzuca.

Klasyczna pętla for ma trzy części: for (let i = 0; i < arr.length; i++) { ... }. Używaj jej, gdy potrzebujesz indeksu lub własnego kroku. Dla samych wartości używaj for...of, dla kluczy obiektu for...in lub Object.entries, a while wtedy, gdy nie wiesz z góry, ile obiegów będzie potrzebnych.

Która pętla pasuje do zadania

Każda pętla na tej stronie powtarza kod, ale różnią się tym, co dostajesz w każdym obiegu, po czym mogą iterować i jak z nich wyjść. Poniższy runner pozwala skierować każdą pętlę na cztery rodzaje danych i zobaczyć prawdziwy wynik, dzięki czemu łatwo wychwycić błędy, takie jak for...in na tablicy albo for...of na zwykłym obiekcie.

Najczęściej zadawane pytania

Czym różni się for...of od for...in?

for...of daje wartości z dowolnego obiektu iterowalnego, na przykład elementy tablicy lub znaki stringa. for...in daje nazwy właściwości jako stringi, łącznie z dziedziczonymi właściwościami wyliczalnymi. Na tablicy for...in zwraca '0', '1', '2' zamiast elementów.

Jak przerwać pętlę forEach?

Nie da się, chyba że rzucisz błąd. Przejdź na for...of, który obsługuje break, albo na some, every, find lub findIndex, które same się zatrzymują, gdy znajdą odpowiedź.

Jak iterować po obiekcie w JavaScript?

Użyj for (const [key, value] of Object.entries(obj)). Obejmuje tylko własne klucze obiektu i daje obie części. Użycie for...of bezpośrednio na zwykłym obiekcie rzuca TypeError: obj is not iterable.

Jak wyjść naraz z dwóch zagnieżdżonych pętli?

Umieść etykietę przed zewnętrzną pętlą i użyj jej z break: outer: for (...) { for (...) { if (found) break outer; } }. continue outer przechodzi natomiast do następnego obiegu zewnętrznej pętli.

Jak iterować od końca?

Zacznij od ostatniego indeksu i odliczaj w dół: for (let i = arr.length - 1; i >= 0; i--). To także bezpieczny sposób usuwania elementów przez splice w trakcie pętli, bo pozycje, które jeszcze masz odwiedzić, się nie przesuwają.

Trzy części pętli for

break, continue i etykiety

Wzorce pętli do skopiowania

Klasyczne for: do przodu, do tyłu i z krokiem

Zmień początek, warunek lub krok, aby liczyć w dowolny sposób.

for...of z indeksem

entries() łączy każdą wartość z jej pozycją, więc dostajesz obie bez licznika.

while i do...while

do...while sprawdza warunek po ciele pętli, więc ciało wykona się raz, nawet gdy warunek od początku jest fałszywy.

Wychodzenie z zagnieżdżonych pętli przez etykietę

break grid zatrzymuje obie pętle, gdy tylko zostanie znalezione pierwsze dopasowanie.

Czekanie na każdy element po kolei

for...of zatrzymuje się przy każdym await. Ten sam kod w forEach uruchomiłby wszystkie żądania naraz i nie czekałby.

Uruchamianie pętli

Wybierz pętlę i dane. Pętla naprawdę się wykonuje, a każdy obieg jest wypisany poniżej.

Pętla

Dane

Tablica

String

Zwykły obiekt

Map

break po trzecim obiegu

Co się wykonuje

Wynik

Obieg {n}: {v}

forEach nie ma break. return wewnątrz callbacku kończy tylko to jedno wywołanie, więc każdy obieg i tak się wykonuje.

Rzuca {v}

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony