JavaScriptda massiv elementini o'zgartirishda xatolik
Keling, massiv elementini noto'g'ri o'zgartirish natijasida yuzaga keladigan xatoni ko'rib chiqaylik. Faraz qilaylik, bizda quyidagi massiv mavjud:
let arr = [1, 2, 3, 4, 5];
Faraz qilaylik, bizda shuningdek, parametr sifatida son qabul qiladigan va shu sonning kvadratini qaytaradigan funksiya mavjud:
function func(num) {
return num ** 2;
}
Keling, for-of
sikli yordamida massivimizni aylantiramiz va uning har bir
elementiga funksiyamizni qo'llaymiz:
for (let elem of arr) {
elem = func(elem);
}
Boshlanuvchilar ko'pincha shu yerda xato qilishadi.
Gap shundaki, elem o'zgaruvchisini o'zgartirish
massivning o'zidagi elementni o'zgartirishga olib kelmaydi.
Bunga ishonch hosil qilaylik:
console.log(arr); // massiv o'zgarmadi
Massiv o'zgarmasligining sababi shundaki,
elem o'zgaruvchisida
elementning nusxasi saqlanadi, unga havola emas.
elem ni o'zgartirish nusxaga ta'sir qiladi,
lekin massivning o'ziga emas.
Muammoni hal qilish uchun aniq massiv elementlarini o'zgartirish kerak:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // endi massiv o'zgardi