6 of 17 menu

Massiivi läbimise viga for-in tsükliga JavaScriptis

Massiivi läbimiseks tuleks kasutada tsüklit for-of. Mõnikord aga teevad algajad ekslikult katset kasutada tsüklit for-in. Vaatame selle vea tunnusmärke.

Olgu meil massiiv:

let arr = ['a', 'b', 'c'];

Läbime selle massiivi elemendid ja kirjutame need ühele reale.

Mingi programmeerija on selle ülesande juba lahendanud, kuid kasutas ekslikult tsüklit for-in. Vaatame, mida ta sai:

let res = ''; for (let elem in arr) { res += elem; } console.log(res); // väljastab '012'

Niisiis, tulemuseks on string '012', mitte 'abc'. Mõtleme välja, miks nii juhtus.

Miks üldse läbitakse massiiv läbi tsükli for-in? Asi on selles, et massiiv on JavaScriptis objekti erijuhtum. Seega on tegelikult selles osas see korrektne kood. Kuid nii ei peaks tegema.

Asi on selles, et for-in võib teatud tingimustel kinnitada liigset, ja peale massiivi elementide satte läbimisel ka midagi muud parasiitset. Läbige massiive ainult läbi for-of.

Mõtleme nüüd välja, miks me näeme sellist kummalist tulemust. Asi on selles, et läbimisel läbi for-in lähevad muutujasse elem tegelikult võtmed, hoolimata selle muutuja nime segadust tekitavast nimetusest.

Parandame tehtud vea ja kirjutame korrektse koodi:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // väljastab 'abc'
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu