Kesalahan Iterasi Array dengan Loop for-in di JavaScript
Untuk mengiterasi array, seharusnya
menggunakan loop for-of.
Terkadang, pemula secara keliru
mencoba menggunakan loop for-in.
Mari kita lihat tanda-tanda khas
dari kesalahan ini.
Misalkan kita memiliki array:
let arr = ['a', 'b', 'c'];
Mari kita iterasi elemen-elemen dari array ini dan tuliskan mereka menjadi satu string.
Seorang programmer telah menyelesaikan masalah ini,
tapi secara keliru menggunakan loop
for-in. Mari kita lihat,
apa yang dia dapatkan:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // akan menampilkan '012'
Jadi, hasilnya adalah string '012',
bukan 'abc'. Mari kita cari tahu mengapa
hal ini terjadi.
Mengapa array bisa diiterasi
melalui loop for-in? Masalahnya adalah
array dalam JavaScript merupakan kasus khusus
dari objek. Jadi sebenarnya
dalam hal ini kode tersebut benar secara sintaks. Tapi hal ini tidak boleh dilakukan.
Masalahnya adalah for-in
dalam kondisi tertentu dapat mengambil
hal yang tidak diperlukan,
dan selain elemen array, Anda
akan mendapatkan sesuatu yang parasit selama iterasi.
Iterasi array hanya dengan for-of.
Sekarang mari kita pahami mengapa kita melihat
hasil yang aneh seperti itu. Masalahnya adalah,
bahwa saat iterasi dengan for-in
sebenarnya yang masuk ke variabel elem
adalah kunci, terlepas dari
nama variabel yang membingungkan ini.
Mari kita perbaiki kesalahan yang dibuat dan tulis kode yang benar:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // akan menampilkan 'abc'