5 of 17 menu

Massiivi elemendi muutmise viga JavaScriptis

Vaatleme viga, mis tekib massiivi elemendi valesti muutmisel. Olgu meil antud selline massiiv:

let arr = [1, 2, 3, 4, 5];

Olgu meil ka funktsioon, mis parameetrina võtab arvu ja tagastab selle arvu ruudu:

function func(num) { return num ** 2; }

Kasutame tsüklit for-of, et läbida meie massiiv ja rakendada iga elemendile meie funktsiooni:

for (let elem of arr) { elem = func(elem); }

Siin kohas teevad algajad sageli vea. Asi on selles, et muutuja elem muutmine ei too kaasa elemendi muutumist massiivis endas. Veendume selles:

console.log(arr); // massiiv ei muutunud

Massiiv ei muutu seetõttu, et muutujas elem hoitakse elemendi koopiat, mitte viidet sellele. elem muutmine mõjutab koopiat, kuid mitte massiivi ennast.

Probleemi lahendamiseks tuleb muuta just massiivi elemente:

for (let i = 0; i < arr.length; i++) { arr[i] = func(arr[i]); } console.log(arr); // nüüd massiiv muutus
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