Możemy uzyskać dostęp do elementów tablicy za pomocą pętli for-of:
for (const j of [1, 2, 3, 4, 5]) {
console.log(j);
}
Jak mogę zmodyfikować ten kod, aby uzyskać dostęp do bieżącego indeksu? Chcę to osiągnąć przy użyciu składni for-of, ani forEach, ani for-in.
javascript
ecmascript-6
for-of-loop
Abdennour TOUMI
źródło
źródło
for-of
ze.entries()
i to dwukrotnie w porównaniu do powolny.forEach()
. jsperf.com/for-of-vs-foreach-with-indexyield
słowa kluczowego. Ale potrzebuję dostępu do indeksu dla mojego przypadku użycia, więc ...;;
to chyba podstawowa stara pętla..entires()
?Array#entries
zwraca indeks i wartość, jeśli potrzebujesz obu:źródło
document.styleSheets[0].cssRules.entries()
lub nawetdocument.styleSheets.entries()
i prawdopodobnie wiele innych struktur iterowalnych DOM. Nadal muszę korzystać_.forEach()
zlodash
for (var value of document.styleSheets) {}
. Jeśli musisz indeksu można przekonwertować wartości do tablicy najpierw poprzezArray.from
:for (let [index, value] of Array.from(document.styleSheets)) {}
.Array.from
jest FTWW tym świecie efektownych nowych natywnych funkcji czasami zapominamy o podstawach.
Czysty, wydajny i nadal możesz
break
zapętlić. Premia! Możesz także zacząć od końca i cofnąć się oi--
!Uwaga dodatkowa: jeśli często używasz wartości w pętli, możesz chcieć zrobić
const value = arr[i];
na górze pętli, aby uzyskać łatwe i czytelne odniesienie.źródło
break
for-of
for (let [index, value] of array.entries())
.reverse()
w kontekście html / js, w nowoczesnych przeglądarkach, z innymi obiektami iterowalnymi niż tablice moglibyśmy również użyć [Iterable] .entries ():
źródło
entries
dla nich żadnej metody.W
for..of
pętli możemy to osiągnąć poprzezarray.entries()
.array.entries
zwraca nowy obiekt iteratora Array. Obiekt iteratora wie, jak uzyskać dostęp do elementów z iterowalnego w tym samym czasie, jednocześnie śledząc jego bieżącą pozycję w tej sekwencji.Po
next()
wywołaniu metody generowane są pary wartości iteratora. W tych parach wartości klucza indeks tablicy jest kluczem, a element tablicy jest wartością.for..of
Pętli jest zasadniczo konstruktem, który zużywa iterowalny i pętle przez wszystkie elementy (z zastosowaniem iteracyjnej pod wyciągiem). Możemy to połączyćarray.entries()
w następujący sposób:źródło
Możesz także samodzielnie obsługiwać indeks, jeśli potrzebujesz indeksu , nie będzie działać, jeśli potrzebujesz klucza .
źródło
Dla tych, którzy używają obiektów, które nie są
Array
ani nawet podobne do tablicy, możesz łatwo zbudować własną iterowalność, dzięki czemu nadal możesz używaćfor of
do rzeczy takich,localStorage
które naprawdę mają tylkolength
:Następnie podaj numer:
źródło
es6
for...in
źródło
for...of
pętli, a niefor...in
for...in
jest częścią oryginalnej specyfikacji ECMAScript (tj. „es1”). Zauważ też, żefor...in
służy to do iteracji właściwości obiektu. Chociaż może iterować po tablicach, może nie robić tego w oczekiwanej kolejności. Zobacz więcej w dokumentacji MDNInnym podejściem może być użycie
Array.prototype.forEach()
jakoźródło
pętla for przechodzi przez tablicę, a właściwość indexof przyjmuje wartość indeksu pasującego do tablicy. PD ta metoda ma pewne wady z liczbami, więc używaj owoców
źródło
["apple", "apple", "pear"]
podanych indeksów0, 0, 2
zamiast0, 1, 2
.