6 of 17 menu

JavaScript да for-in цикли билан массивни қайталашдаги хатолик

Массивни қайталаш учун for-of циклидан фойдаланиш керак. Аммо, баъзан бошланувчилар хато қилиб for-in циклини қўллашга ҳаракат қиладилар. Келинг, бу хатолинг характерли белгиларини кўриб чиқайлик.

Бизда массив мавжуд деб фараз қилайлик:

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

Келинг, бу массив элементларини қайталаб, уларни битта сатрга ёзайлик.

Бир дастурчи бу масалани аллоқачон ечган, лекин хато қилиб for-in циклидан фойдаланган. Келинг, унинг натижасини кўриб чиқайлик:

let res = ''; for (let elem in arr) { res += elem; } console.log(res); // '012' ни кўрсатади

Шунинг учун, натижада 'abc' эмас, балки '012' сатри ҳосил бўлади. Нега бундой бўлганини тушуниб кўрайлик.

Нега умуман массив for-in цикли орқали қайталанди? Гapи шундаки, JavaScript да массив объектнинг Maxcус ҳолидир. Шу сабабли аслида бу жиҳатдан бу дурус коддир. Лекин бундай қилиш керак эмас.

Гapи шундаки, for-in айrim шартларда ортиқча элементларни ҳам қамраб олиши мумкин, ва сиз массив элементлари билан биргатибa қайталаш жараёнида яна қандайдир паразит нарсаларни олишингиз мумкин. Массивларни фақат for-of орқали қайталанг.

Энди нега биз бундай гʻалати натижани кўриб турганимизни тушуниб кўрайлик. Гapи шундаки, for-in орқали қайталашда elem ўзгарувчисига аслида калитлар түшади, ҳатто ўзгарувчининг номи сизни адаштиришига қарамай.

Келинг, қилинган хатоликни түзатамиз ва дурус кодни ёзайлик:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // 'abc' ни кўрсатади
Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш