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); // දැන් අරාව වෙනස් වී ඇත