JavaScript では、ディープ コピー テクノロジは配列內(nèi)の要素に依存します。ここから始めましょう。
要素には、リテラル値、リテラル構(gòu)造、またはプロトタイプを指定できます。
リーリーこれらの要素から、3 種類の配列を作成できます。
リーリー配列內(nèi)の要素のタイプに応じて、さまざまな手法を使用してディープ コピーを?qū)g行できます。
https://www.measurethat.net/Benchmarks/Show/17502/0/deep-copy-comparison
リテラル配列 (タイプ 1)
[ ...myArray ]
、myArray.splice(0)
、myArray.slice()
、および myArray.concat()# を使用できます。 # # リテラル値 (ブール値、數(shù)値、文字列) のみを含む配列をディープ コピーする手法。その中でも、Chrome では
slice() が最もパフォーマンスが高く、Firefox ではスプレッド演算子
. .. が最も高いパフォーマンスを発揮します。
リテラル値配列 (タイプ 1) およびリテラル構(gòu)造配列 (タイプ 2)
JSON.parse(JSON.stringify(myArray)) テクノロジーを使用すると、リテラル値 (ブール値、數(shù)値、文字列) とリテラル構(gòu)造 (配列、オブジェクト) をディープ コピーできますが、プロトタイプ オブジェクトはディープ コピーできません。コピーされました。
すべての配列 (タイプ 1、タイプ 2、タイプ 3)
jQuery
の extend(true, [], myArray)# を使用できます。 ## テクノロジー すべてのタイプの配列をディープ コピーします。その中でも、Lodash の cloneDeep() は技術(shù)的なパフォーマンスが最も優(yōu)れています。
サードパーティ ライブラリの使用を避けている人のために、次のカスタム関數(shù)は、
cloneDeep()
リーリー