Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menyalin Dalam Terbaik Susunan Objek Saling Berhubung dalam JavaScript?

Bagaimana untuk Menyalin Dalam Terbaik Susunan Objek Saling Berhubung dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-11 19:51:14199semak imbas

How to Best Deep Copy an Array of Interconnected Objects in JavaScript?

Menyalin Tatasusunan Objek Saling Berhubung

Apabila bekerja dengan struktur data yang kompleks, seperti tatasusunan objek dengan rujukan kepada objek lain dalam tatasusunan yang sama, mencipta salinan dalam yang sebenar boleh mencabar. Mari kita terokai pelbagai pendekatan:

Mencipta Salinan Dalam dengan structuredClone

Penyelesaian moden untuk penyalinan dalam menggunakan structuredClone():

array2 = structuredClone(array1);

Kaedah ini menyokong pelbagai jenis data dan disokong oleh kebanyakan penyemak imbas.

Mencipta Salinan Dalam dengan JSON.parse

Untuk objek dengan kandungan boleh bersiri JSON, penyelesaian satu baris yang mudah ialah:

let clonedArray = JSON.parse(JSON.stringify(nodesArray))

Walau bagaimanapun, ia mempunyai had dengan isu kandungan dan prestasi yang tidak boleh disiri berbanding yang lain kaedah.

Mencipta Salinan Dalam dengan Operator Spread

Jika tatasusunan anda mengandungi cetek objek, operator hamparan digabungkan dengan .map() boleh digunakan untuk salinan dalam yang pantas dan cekap:

clonedArray = nodesArray.map(a => ({...a}));

Kaedah ini mengatasi JSON.parse dengan ketara.

Pertimbangan

  • Prestasi: Prestasi penyalinan dalam boleh berbeza-beza bergantung pada saiz dan kerumitan struktur data anda. Penandaarasan pendekatan berbeza disyorkan.
  • Keserasian: structuredClone() memerlukan versi penyemak imbas yang agak baharu. Jika keserasian membimbangkan, gunakan kaedah alternatif.
  • Pensirian lwn. Pengklonan: Jika objek anda perlu dihantar melalui rangkaian, anda mungkin mahu mempertimbangkan penyirian dan bukannya pengklonan.

Atas ialah kandungan terperinci Bagaimana untuk Menyalin Dalam Terbaik Susunan Objek Saling Berhubung dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn