Ralat Mengubah Elemen Array dalam JavaScript
Mari kita lihat ralat yang timbul akibat perubahan elemen array yang tidak betul. Katakan kita mempunyai array seperti berikut:
let arr = [1, 2, 3, 4, 5];
Katakan juga kita mempunyai fungsi, yang menerima nombor sebagai parameter dan mengembalikan kuasa dua nombor tersebut:
function func(num) {
return num ** 2;
}
Mari gunakan gelung for-of
untus mengulangi array kita dan gunakan
fungsi kita pada setiap elemennya:
for (let elem of arr) {
elem = func(elem);
}
Di sinilah pemula sering melakukan
ralat. Masalahnya ialah, menukar pembolehubah
elem tidak menyebabkan perubahan elemen
dalam array itu sendiri. Mari kita pastikan:
console.log(arr); // array tidak berubah
Array tidak berubah kerana
pembolehubah elem menyimpan
salinan elemen, bukan rujukan kepadanya.
Menukar elem mempengaruhi salinan,
tetapi bukan array itu sendiri.
Untuk menyelesaikan masalah ini, kita perlu menukar tepat elemen array:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // kini array telah berubah