JavaScriptでmapを使って配列をdeep copyする方法とは?
今回はJSでmapを使って配列をdeep copyする方法についてご紹介いたします。
JavaScriptでmapを使って配列をdeep copyする方法とは?
JSでmapを使って配列をコピーする際に、配列の中身が配列だったり、インスタンスであった場合は、中身のアドレスを参照してしまうのでコピー先で変えた変更がコピー元でも反映されてしまいます。
1 2 3 4 5 6 |
test1 = [[1, 2, 3], [4, 5, 6]] test2 = [...test1] // 下記を入力するとtest2の中身は[[9, 2, 3], [9, 5, 6]]となるが、test1の中身も[[9, 2, 3], [9, 5, 6]]になってしまう test2[0][0] = 9 test2[1][0] = 9 |
そんな時は、次のようにmapを使ってスプレッド構文などで配列の中身のアドレスも変えてあげましょう。
1 2 3 4 5 6 |
test1 = [[1, 2, 3], [4, 5, 6]] test2 = test1.map(t => { t = {...t}; t[0] = 9; return t; }) |
終わりに
今回はJSでmapを使って配列をdeep copyする方法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません