JavaScript-ში მასივის ელემენტის შეცვლის შეცდომა
განვიხილოთ შეცდომა, რომელიც წარმოიქმნება მასივის ელემენტის არასწორად შეცვლისას. დავუშვათ, გვაქვს ასეთი მასივი:
let arr = [1, 2, 3, 4, 5];
დავუშვათ, გვაქვს ფუნქცია, რომელიც პარამეტრად იღებს რიცხვს და აბრუნებს ამ რიცხვის კვადრატს:
function func(num) {
return num ** 2;
}
for-of ციკლის გამოყენებით
გადავუყვეთ ჩვენს მასივს და თითოეულ
ელემენტზე გამოვიყენოთ ჩვენი ფუნქცია:
for (let elem of arr) {
elem = func(elem);
}
ამ მომენტში დამწყები ხშირად უშვებენ
შეცდომას. საქმე იმაშია, რომ ცვლადის
elem შეცვლა არ იწვევს ელემენტის
შეცვლას თავად მასივში. დავრწმუნდეთ ამაში:
console.log(arr); // მასივი არ შეცვლილა
მასივი არ იცვლება იმის გამო,
რომ ცვლად elem-ში ინახება
ელემენტის ასლი და არა მისი მითითება.
elem-ის შეცვლა მოქმედებს ასლზე,
მაგრამ არა თავად მასივზე.
პრობლემის მოსაგვარებლად საჭიროა შევცვალოთ ზუსტად მასივის ელემენტები:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // ახლა მასივი შეცვლილა