[JS]浅い放射線、深い放射線
既存のデータをエンコードする場合は、元のデータを変更しないでください.
主に電子演算子を用いてデータをコピーする方法を用いた. testとcopyのアドレスが異なるため、copyの値を変更しても元のデータであるtestは変更されません. でも、深さが深いほど、
他のJavaScriptレプリケーション方法を使用すると、元のデータが変更されます.
testとcopyには、アドレスが異なるため、関連はありません. ですが、深さがもっと高い場合(test.a©.a)、同じ参照値が表示されます.
copy.aの値を変更する場合test.aの値も変わります.(元のデータが変更されました)
これらの問題を解決するためには、完全な深さレプリケーションが必要です.
JSONのデータが多ければ多いほど、パフォーマンスが悪くなります. オブジェクト、Array、Number、String、True、False、Nullを除き、JSON値は受け入れられません. で新しく導入されたBigIntの場合、エラーが発生します.
1深度では、JavaScriptメソッド(spread演算子、sliceなど)を使用してコピーできます. 深さが2より大きい場合は、JSONまたはライブラリを使用してコピーします. の深さレプリケーションが必要かどうかは、各項目で考慮する必要があります.
主に電子演算子を用いてデータをコピーする方法を用いた.
const test = [1, 2];
const copy = [...test];
test === copy; // false
他のJavaScriptレプリケーション方法を使用すると、元のデータが変更されます.
copy.aの値を変更する場合test.aの値も変わります.(元のデータが変更されました)
ふかほうしゃ
これらの問題を解決するためには、完全な深さレプリケーションが必要です.
1. JSON.parse & JSON.stringify
const test = [1, 2];
const copy = JSON.parse(JSON.stringify(test));
に質問
2.LodashやRamdaなどのライブラリを利用する
n/a.結論
Reference
この問題について([JS]浅い放射線、深い放射線), 我々は、より多くの情報をここで見つけました https://velog.io/@mandarinduk/JS-얕은-복사-깊은-복사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol