Զանգվածի տարրի փոփոխման սխալը 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); // այժմ զանգվածը փոխվել է