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); // эми массив өзгөрдү