シャロ―コピーとディープコピーについて
シャローコピー
TypeScriptでは、配列でこのような書き方はしてはいけない。
const _arr = [1,2,3];
const arr = _arr;このような書き方をするとarrは_arrの参照を取ってしまう。
const _arr = [1,2,3];
const arr = _arr;
_arr[0] = 9;
console.log(arr);これを実行すると
9,2,3となる。
そこで使用するのがシャロ―コピー(浅いコピー)。
シャロ―コピーとは、一次元配列をコピー(複製)する際に使うものである。
[...配列名]で書き表される。
const arr = [..._arr];ディープコピー
ディープコピー(深いコピー)とは、多次元配列をコピー(複製)する際に使うものである。
もっとも簡単なのはこれ
const arr = JSON.parse(JSON.stringify(_arr));関数にするならこれ。
function deepCopy<T>(obj: T): T {
return JSON.parse(JSON.stringify(obj));
}
const originalArray = [1, 2, [3, 4];
const copiedArray = deepCopy(originalArray);