जावास्क्रिप्ट में ऐरे की डीप कॉपी करना डेटा की अखंडता सुनिश्चित करने और अनपेक्षित साइड इफेक्ट्स को रोकने के लिए बहुत महत्वपूर्ण है। शैलो कॉपी के विपरीत, जो केवल रेफरेंस की डुप्लीकेट बनाते हैं, डीप कॉपी सभी नेस्टेड स्ट्रक्चर सहित पूरी तरह से स्वतंत्र कॉपी बनाते हैं। यह लेख डीप कॉपी प्राप्त करने के कई तरीकों का पता लगाता है, उनकी ताकत और कमजोरियों की तुलना करके आपकी विशिष्ट आवश्यकताओं के लिए इष्टतम दृष्टिकोण चुनने में आपकी मदद करता है।
विषय-सूची
- शैलो और डीप कॉपी को समझना
structuredClone()
का उपयोग करनाJSON.parse()
औरJSON.stringify()
का लाभ उठाना- Lodash लाइब्रेरी का उपयोग करना
- सर्वोत्तम विधि चुनना
शैलो और डीप कॉपी को समझना
जावास्क्रिप्ट में डेटा संरचनाओं की प्रतिलिपि बनाते समय, शैलो और डीप कॉपी के बीच अंतर करना आवश्यक है। एक शैलो कॉपी एक नई ऑब्जेक्ट बनाती है लेकिन इसे मूल के तत्वों के संदर्भों से भरती है। शैलो कॉपी में एक नेस्टेड एलिमेंट को संशोधित करने से मूल में भी संशोधन होगा। इसके विपरीत, एक डीप कॉपी, मूल ऑब्जेक्ट और उसके सभी नेस्टेड स्ट्रक्चर की पूरी तरह से स्वतंत्र प्रतिकृति बनाती है। डीप कॉपी में परिवर्तन मूल को प्रभावित नहीं करेंगे, और इसके विपरीत।
structuredClone()
का उपयोग करना
structuredClone()
विधि डीप कॉपी बनाने का एक आधुनिक और कुशल तरीका है। यह वर्तमान ब्राउज़रों और Node.js वातावरणों में व्यापक रूप से समर्थित है और परिपत्र संदर्भों को सुचारू रूप से संभालता है।
const originalArray = [1, 2, [3, 4], { a: 5 }];
const deepCopyArray = structuredClone(originalArray);
deepCopyArray[2].push(5);
deepCopyArray[3].a = 10;
console.log("Original Array:", originalArray); // अपरिवर्तित रहता है
console.log("Deep Copy Array:", deepCopyArray); // संशोधित
यह विधि आम तौर पर इसकी सादगी और मजबूती के लिए पसंद की जाती है।
JSON.parse()
और JSON.stringify()
का लाभ उठाना
यह तकनीक JSON.stringify()
का उपयोग करके ऐरे को JSON स्ट्रिंग में क्रमबद्ध करती है और फिर JSON.parse()
का उपयोग करके इसे एक नए ऐरे में वापस डीसीरियलाइज़ करती है। सरल ऐरे के लिए प्रभावी होने के बावजूद, इसकी सीमाएँ हैं।
const originalArray = [1, 2, [3, 4], { a: 5 }];
const deepCopyArray = JSON.parse(JSON.stringify(originalArray));
deepCopyArray[2].push(5);
deepCopyArray[3].a = 10;
console.log("Original Array:", originalArray);
console.log("Deep Copy Array:", deepCopyArray);
सीमाएँ:
- केवल JSON-सीरियलाइजेबल डेटा प्रकारों के साथ काम करता है। फ़ंक्शन, तिथियाँ और कस्टम ऑब्जेक्ट सही ढंग से संभाले नहीं जा सकते हैं।
- बड़े ऐरे के लिए
structuredClone()
की तुलना में कम कुशल हो सकता है।
Lodash लाइब्रेरी का उपयोग करना
Lodash का _.cloneDeep()
फ़ंक्शन एक मज़बूत डीप क्लोनिंग समाधान प्रदान करता है। हालाँकि, यह एक बाहरी निर्भरता प्रस्तुत करता है।
const _ = require('lodash'); // Lodash स्थापित करने की आवश्यकता है: npm install lodash
const originalArray = [1, 2, [3, 4], { a: 5 }];
const deepCopyArray = _.cloneDeep(originalArray);
deepCopyArray[2].push(5);
deepCopyArray[3].a = 10;
console.log("Original Array:", originalArray);
console.log("Deep Copy Array:", deepCopyArray);
Lodash विभिन्न डेटा प्रकारों को प्रभावी ढंग से संभालता है लेकिन प्रोजेक्ट की जटिलता को बढ़ाता है।
सर्वोत्तम विधि चुनना
structuredClone()
को आम तौर पर इसकी दक्षता, व्यापक संगतता और उपयोग में आसानी के संतुलन के लिए अनुशंसित किया जाता है। JSON-संगत डेटा वाले बुनियादी ऐरे के लिए JSON.parse()/JSON.stringify()
एक सरल विकल्प है। Lodash एक शक्तिशाली समाधान प्रदान करता है लेकिन एक बाहरी निर्भरता की आवश्यकता होती है। सर्वोत्तम विधि का चयन करते समय अपनी परियोजना की आवश्यकताओं और जटिलता पर विचार करें।