6 of 17 menu

Fel vid iteration av array med for-in-loop i JavaScript

För att iterera genom en array bör man använda en for-of-loop. Ibland försöker dock nybörjare felaktigt använda en for-in-loop. Låt oss titta på de karakteristiska tecknen på detta fel.

Låt oss säga att vi har en array:

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

Låt oss iterera genom elementen i denna array och skriva dem till en enda sträng.

En viss programmerare har redan löst detta problem, men använde felaktigt en for-in-loop. Låt oss se vad han fick:

let res = ''; for (let elem in arr) { res += elem; } console.log(res); // kommer att skriva ut '012'

Så, resultatet blir strängen '012', och inte 'abc'. Låt oss ta reda på varför detta hände.

Varför gick det överhuvudtaget att iterera arrayen med en for-in-loop? Saken är den att en array i JavaScript är ett specialfall av ett objekt. Så egentligen är det korrekt kod i detta avseende. Men man bör inte göra så här.

Anledningen är att for-in under vissa förhållanden kan fånga upp extra saker, och förutom arrayelementen får du något parasitisk under iterationen. Iterera arrayer endast med for-of.

Låt oss nu ta reda på varför vi ser ett så konstigt resultat. Saken är den, att vid iteration med for-in kommer variabeln elem faktiskt att innehålla nycklarna, trots variabelns villovägande namn.

Låt oss rätta till det begångna felet och skriva korrekt kod:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // kommer att skriva ut 'abc'
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa