6 of 17 menu

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'
Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak