Kita bisa mengakses elemen array menggunakan for-of loop:
for (const j of [1, 2, 3, 4, 5]) {
console.log(j);
}
Bagaimana saya bisa memodifikasi kode ini untuk mengakses indeks saat ini juga? Saya ingin mencapai ini menggunakan sintaks untuk, baik forEach maupun for-in.
javascript
ecmascript-6
for-of-loop
Abdennour TOUMI
sumber
sumber
for-of
dengan.entries()
dan itu dua kali lebih lambat dibandingkan dengan.forEach()
. jsperf.com/for-of-vs-foreach-with-indexyield
kata kunci. Tapi saya perlu akses ke indeks untuk kasus penggunaan saya, jadi ...;;
loop tua dasar itu, saya kira..entires()
?Array#entries
mengembalikan indeks dan nilainya, jika Anda membutuhkan keduanya:sumber
document.styleSheets[0].cssRules.entries()
atau bahkandocument.styleSheets.entries()
dan mungkin banyak struktur DOM lainnya yang dapat diubah. Masih harus menggunakan_.forEach()
darilodash
for (var value of document.styleSheets) {}
. Jika Anda perlu indeks Anda dapat mengkonversi nilai ke array pertama melaluiArray.from
:for (let [index, value] of Array.from(document.styleSheets)) {}
.Array.from
adalah FTWDalam dunia fungsi asli baru yang mencolok ini, kita terkadang melupakan dasar-dasarnya.
Bersih, efisien, dan Anda masih bisa
break
mengulang. Bonus! Anda juga bisa mulai dari akhir dan mundur dengani--
!Catatan tambahan: Jika Anda banyak menggunakan nilai dalam loop, Anda mungkin ingin melakukannya
const value = arr[i];
di bagian atas loop untuk referensi yang mudah dibaca.sumber
break
seorangfor-of
danfor (let [index, value] of array.entries())
jauh lebih mudah dibaca. Mundur adalah semudah menambahkan.reverse()
.dalam konteks html / js, pada peramban modern, dengan objek lain yang dapat dihapus selain Array, kami juga dapat menggunakan [Iterable] .entries ():
sumber
entries
metode untuk mereka.Dalam satu
for..of
lingkaran kita dapat mencapai ini melaluiarray.entries()
.array.entries
mengembalikan objek iterator Array baru. Objek iterator tahu cara mengakses item dari item iterable pada saat itu, sambil melacak posisi saat ini dalam urutan itu.Ketika
next()
metode ini dipanggil pada nilai kunci iterator, pasangan dihasilkan. Dalam pasangan nilai kunci ini indeks array adalah kunci dan item array adalah nilainya.Sebuah
for..of
loop pada dasarnya adalah sebuah konstruksi yang mengkonsumsi iterable dan loop melalui semua elemen (menggunakan iterator di bawah tenda). Kami dapat menggabungkan ini denganarray.entries()
cara berikut:sumber
Anda juga dapat menangani indeks sendiri jika Anda memerlukan indeks , itu tidak akan berfungsi jika Anda membutuhkan kunci .
sumber
Bagi mereka yang menggunakan objek yang bukan
Array
atau bahkan seperti array, Anda dapat membangun iterable Anda sendiri dengan mudah sehingga Anda masih dapat menggunakanfor of
untuk hal-hal sepertilocalStorage
yang benar-benar hanya memilikilength
:Maka cukup beri nomor:
sumber
es6
for...in
sumber
for...of
lingkaran bukanfor...in
for...in
adalah bagian dari spesifikasi ECMAScript asli (yaitu "es1"). Juga, perhatikan bahwafor...in
ini dimaksudkan untuk mengulangi properti objek. Meskipun dapat mengulangi lebih dari array, itu mungkin tidak melakukannya dalam urutan yang diharapkan. Lihat lebih banyak di dokumentasi MDNPendekatan lain bisa menggunakan
Array.prototype.forEach()
sebagaisumber
for for melewati larik array, sementara properti indexof mengambil nilai indeks yang cocok dengan larik. Metode PD ini memiliki beberapa kekurangan dengan angka, jadi gunakan buah-buahan
sumber
["apple", "apple", "pear"]
indeks yang diberikan0, 0, 2
bukan0, 1, 2
.