JavaScriptにおける配列要素変更のエラー
配列要素の誤った変更によって発生するエラーについて見ていきましょう。 例えば、以下のような配列があるとします。
let arr = [1, 2, 3, 4, 5];
また、数値を受け取りその2乗を返す関数があるとします。
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); // これで配列が変更された