Грешка при менување на елемент од низа во 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); // сега низата е променета