JavaScript-də massiv elementinin dəyişdirilməsi xətası
Gəlin, massiv elementinin səhv dəyişdirilməsi zamanı yaranan xətanı nəzərdən keçirək. Tutaq ki, bizə belə bir massiv verilib:
let arr = [1, 2, 3, 4, 5];
Tutaq ki, bizim həmçinin parametr kimi ədəd qəbul edən və həmin ədədin kvadratını qaytaran funksiyamız var:
function func(num) {
return num ** 2;
}
Gəlin for-of döngüsü ilə
massivimizi gəzək və onun hər bir
elementinə funksiyamızı tətbiq edək:
for (let elem of arr) {
elem = func(elem);
}
Yeni başlayanlar tez-tez xətanı məhz burada edirlər.
Məsələ ondadır ki, elem dəyişəninin dəyişdirilməsi
massivin özündəki elementin dəyişməsinə gətirib çıxarmır.
Gəlin buna əmin olaq:
console.log(arr); // massiv dəyişmədi
Massiv dəyişmir, çünki elem dəyişənində
elementin surəti saxlanılır, ona istinad yoxdur.
elem-in dəyişdirilməsi surətə təsir edir,
amma massivin özünə yox.
Problemi həll etmək üçün məhz massivin elementlərini dəyişdirmək lazımdır:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // indi massiv dəyişdi