JavaScript တွင် Array အစိတ်အပိုင်းကို ပြင်ဆင်ရာတွင် ဖြစ်တတ်သော အမှား
Array အစိတ်အပိုင်းကို မှားယွင်းစွာ ပြင်ဆင်မိခြင်းကြောင့် ဖြစ်ပေါ်လာတတ်သော အမှားကို ကြည့်ရှုကြပါစို့။ ကျွန်ုပ်တို့မှာ အောက်ပါ Array ရှိသည်ဆိုပါစို့။
let arr = [1, 2, 3, 4, 5];
ပြီးတော့ ကျွန်ုပ်တို့မှာ ကိန်းတစ်ခုကို parameter အဖြစ် လက်ခံပြီး ၎င်းကိန်း၏ နှစ်ထပ်ကိန်းကို ပြန်ပေးသော function တစ်ခုလည်း ရှိသည်ဆိုပါစို့။
function func(num) {
return num ** 2;
}
ကျွန်ုပ်တို့၏ array ကို for-of loop ဖြင့် လှည့်ပတ်ကြည့်ပြီး ၎င်း၏ အစိတ်အပိုင်းတစ်ခုစီကို ကျွန်ုပ်တို့၏ function ဖြင့် အသုံးချကြည့်ကြပါစို့။
for (let elem of arr) {
elem = func(elem);
}
ဒီနေရာမှာ စတင် လေ့လာသူများ အမှားမကြာခဏ လုပ်မိတတ်ပါသည်။ အကြောင်းမှာ elem variable ကို ပြောင်းလဲခြင်းသည် array အတွင်းရှိ အစိတ်အပိုင်းကို ပြောင်းလဲသွားစေခြင်း မရှိပါ။ ၎င်းကို အတည်ပြုကြည့်ရအောင်။
console.log(arr); // array ပြောင်းလဲမှု မရှိပါ
elem variable တွင် အစိတ်အပိုင်း၏ မိတ္တူ (copy) သာသိမ်းဆည်းထားပြီး ၎င်းကို ညွှန်ပြသော reference မဟုတ်သောကြောင့် array သည် မပြောင်းလဲပါ။ elem ကို ပြောင်းလဲခြင်းသည် မိတ္တူအပေါ်တွင် သက်ရောက်မှုရှိသော်လည်း array ကိုယ်နှိုက်အပေါ်တွင်မူ မသက်ရောက်ပါ။
ဤပြဿနာကို ဖြေရှင်းရန် array ၏ အစိတ်အပိုင်းများကိုသာ တိုက်ရိုက် ပြင်ဆင်ရန် လိုအပ်ပါသည်။
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // ယခု array ပြောင်းလဲသွားပါပြီ