Kļūda, mainot masīva elementu JavaScript
Apskatīsim kļūdu, kas rodas, nepareizi mainot masīva elementu. Pieņemsim, ka mums ir dots šāds massīvs:
let arr = [1, 2, 3, 4, 5];
Pieņemsim, ka mums ir arī funkcija, kas parametru pieņem skaitli un atgriež šī skaitļa kvadrātu:
function func(num) {
return num ** 2;
}
Izmantosim ciklu for-of,
lai izietu cauri mūsu masīvam un katram
tā elementam piemērotu mūsu funkciju:
for (let elem of arr) {
elem = func(elem);
}
Šajā vietā iesācēji bieži pieļauj
kļūdu. Lieta tāda, ka mainīgā
elem mainīšana neizraisa elementa
izmaiņas pašā masīvā. Pārliecināsimies par to:
console.log(arr); // masīvs nav mainījies
Masīvs nemainās tāpēc,
ka mainīgajā elem glabājas
elementa kopija, nevis atsauce uz to.
elem mainīšana ietekmē kopiju,
bet ne pašu masīvu.
Lai atrisinātu problēmu, ir jāmaina tieši masīva elementi:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // tagad masīvs ir mainījies