はじめに
問題
- ary2だけ更新したつもりが、ary1[0]が999になる
const ary1 = [0, 1, 2];
const ary2 = ary1;
ary2[0] = 999;
console.log({ ary1 });
console.log({ ary2 });
// ary1[0]が999になる
解決
- スプレッド構文を使う
const ary3 = [0, 1, 2];
const ary4 = [...ary3];
ary4[0] = 999;
console.log({ ary3 });
console.log({ ary4 });
終わりに
以下、修正前の記事内容です。
修正前の記事
【JavaScript】配列のディープコピーをしたい場合はスプレッド構文を使う
はじめに
- スプレッド構文の復習
問題
- ary2だけ更新したつもりが、ary1[0]が999になる
const ary1 = [0, 1, 2];
const ary2 = ary1;
ary2[0] = 999;
console.log({ ary1 });
console.log({ ary2 });
// ary1[0]が999になる
解決策
- スプレッド構文を使いディープコピーすればary3[0]は0のまま
const ary3 = [0, 1, 2];
const ary4 = [...ary3];
ary4[0] = 999;
console.log({ ary3 });
console.log({ ary4 });
終わりに
ディープコピーとシャローコピーに関しては以下を参照
