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