Eroare la modificarea unui element de matrice în JavaScript
Să luăm în considerare eroarea care apare atunci când un element de matrice este modificat incorect. Să presupunem că avem următoarea matrice:
let arr = [1, 2, 3, 4, 5];
Să presupunem, de asemenea, că avem o funcție care ia un număr ca parametru și returnează pătratul acelui număr:
function func(num) {
return num ** 2;
}
Să parcurgem matricea noastră cu bucla
for-of
și să aplicăm funcția noastră fiecăruia
dintre elementele sale:
for (let elem of arr) {
elem = func(elem);
}
În acest moment, începătorii fac adesea
o greșeală. Cert este că modificarea variabilei
elem nu duce la modificarea elementului
în matricea în sine. Să ne convingem de acest lucru:
console.log(arr); // matricea nu s-a schimbat
Matricea nu se modifică deoarece
variabila elem stochează
o copie a elementului, și nu o referință la acesta.
Modificarea elem afectează copia,
dar nu și matricea în sine.
Pentru a rezolva problema, trebuie să modificați exact elementele matricei:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // acum matricea s-a schimbat