जावास्क्रिप्ट में, ऐरे की कॉपी बनाना असाइनमेंट ऑपरेटर (=) का उपयोग करके डुप्लिकेट बनाने जितना सरल नहीं है। यदि आपने कभी ऐसा करने की कोशिश की है, तो आप यह जानकर आश्चर्यचकित होंगे कि यह केवल मूल सूची का एक लिंक बनाता है। क्या मामला है?
इस गाइड में, हम जावास्क्रिप्ट ऐरे की कॉपी बनाने के तरीके के बारे में बात करेंगे। हम तीन जावास्क्रिप्ट कॉपी ऐरे रणनीतियों के कोड के माध्यम से चलेंगे ताकि आप ऐरे कॉपी करना शुरू कर सकें।
जावास्क्रिप्ट ऐरे कॉपी करने की समस्या
कुछ हद तक, "=" ऑपरेटर ऐरे की कॉपी को नए वेरिएबल में बनाता है। यह कॉपी की तुलना में पॉइंटर अधिक है। ऐसा इसलिए है क्योंकि "=" ऑपरेटर मूल ऐरे का संदर्भ बनाता है। यह मौजूदा ऐरे का डुप्लिकेट नहीं बनाता।
आइए बिना किसी अन्य कोड के असाइनमेंट ऑपरेटर का उपयोग करके ऐरे की कॉपी बनाने का प्रयास करें:
var berries = ["Strawberry", "Gooseberry", "Raspberry"]; var fruits = berries; console.log(fruits);
हमारा कोड रिटर्न करता है:
[ "Strawberry", "Gooseberry", "Raspberry" ]
ऐसा लगता है जैसे हमारा ऐरे कॉपी हो गया है। "fruits" में हमारे "berries" ऐरे के सभी मान हैं।
अब, आइए "fruits" ऐरे में एक आइटम जोड़ने का प्रयास करें:
fruits.push("Melon"); console.log(fruits); console.log(berries);
हमने fruits ऐरे में "Melon" जोड़ा। फिर हम "fruits" और "berries" के मानों को कंसोल पर प्रिंट करते हैं:
[ "Strawberry", "Gooseberry", "Raspberry", "Melon" ] [ "Strawberry", "Gooseberry", "Raspberry", "Melon" ]
"fruits" और "berries" दोनों में समान मान हैं। ऐसा इसलिए है क्योंकि हमने तकनीकी रूप से अपने ऐरे को क्लोन नहीं किया है। हमने सिर्फ इसके लिए एक संदर्भ बनाया है।
जब भी हम "berries" ऐरे में हेरफेर करते हैं, परिवर्तन "fruits" ऐरे में किए जाएंगे।
जावास्क्रिप्ट ऐरे कैसे कॉपी करें
असाइनमेंट ऑपरेटर ऐरे को कॉपी नहीं करता। हमें दूसरे दृष्टिकोण का उपयोग करना होगा। सौभाग्य से हमारे लिए, ऐरे की कॉपी बनाने के कई तरीके हैं। शीर्ष तीन दृष्टिकोण हैं:
- स्प्रेड ऑपरेटर का उपयोग करना
- फॉर लूप का उपयोग करना
- Array.from का उपयोग करना
आइए इन्हें एक-एक करके चर्चा करें।
स्प्रेड ऑपरेटर का उपयोग करना
स्प्रेड ऑपरेटर जावास्क्रिप्ट ES6 में पेश की गई एक विशेषता है। यह आपको इटरेबल ऑब्जेक्ट की सामग्री तक पहुंचने की अनुमति देता है। इस ऑपरेटर का उपयोग अक्सर ऐरे की शैलो कॉपी बनाने के लिए किया जाता है।
स्प्रेड ऑपरेटर में तीन डॉट्स होते हैं, जैसे दीर्घवृत्त (…)। आइए पहले के अपने "berries" ऐरे की कॉपी बनाने का प्रयास करें:
var berries = ["Strawberry", "Gooseberry", "Raspberry"]; var fruits = [...berries]; fruits.push("Melon");
हमने अपने ऐरे की कॉपी बनाने के लिए स्प्रेड ऑपरेटर का उपयोग किया। आइए अपने ऐरे के मानों की जांच करें ताकि यह सुनिश्चित हो सके कि वे सही हैं:
console.log(berries); console.log(fruits);
हमारा कोड रिटर्न करता है:
[ "Strawberry", "Gooseberry", "Raspberry" ] [ "Strawberry", "Gooseberry", "Raspberry", "Melon" ]
"Melon" मान केवल "fruits" ऐरे में जोड़ा गया था। ऐसा इसलिए है क्योंकि हमने "berries" ऐरे का डुप्लिकेट बनाने के लिए स्प्रेड ऑपरेटर का उपयोग किया। अब, "fruits" ऐरे अपने आप में एक ऐरे है। इसके मान "berries" ऐरे से अलग हैं।
फॉर लूप का उपयोग करना
आजमाया हुआ और सच्चा तरीका, फॉर लूप का उपयोग ऐरे की कॉपी बनाने का एक अच्छा तरीका है।
यह मेथड स्प्रेड ऑपरेटर जितना पसंदीदा नहीं हो सकता क्योंकि इसके लिए अधिक लाइनों के कोड की आवश्यकता होती है। उस ने कहा, फॉर लूप ऑब्जेक्ट को अच्छी तरह से कॉपी करता है।
var berries = ["Strawberry", "Gooseberry", "Raspberry"]; var fruits = []; for (var i = 0; i < berries.length; i++) { fruits[i] = berries[i] }
हमने दो सूचियां घोषित की हैं: berries और fruits। Fruits शुरू में एक खाली सूची है। फिर, हमने "berries" सूची में प्रत्येक आइटम के माध्यम से लूप करने के लिए फॉर लूप का उपयोग किया। सूची में प्रत्येक आइटम के लिए, मान "fruits" ऐरे में कॉपी हो जाता है।
आइए यह देखने के लिए अपना टेस्ट चलाएं कि क्या हमारे ऐरे अलग हैं:
fruits.push("Grapefruit"); console.log(berries); console.log(fruits);
हमारा कोड रिटर्न करता है:
[ "Strawberry", "Gooseberry", "Raspberry" ] [ "Strawberry", "Gooseberry", "Raspberry", "Grapefruit" ]
सफलता! "berries" और "fruits" दो अलग-अलग ऐरे हैं।
Array.from() का उपयोग करना
Array.from() मेथड किसी भी इटरेबल ऑब्जेक्ट को ऐरे में बदल देता है। यह इटरेबल में प्रत्येक आइटम के माध्यम से जाता है और उसे नए ऐरे में जोड़ता है। इसका मतलब है कि इसका उपयोग ऐरे कॉपी करने के लिए किया जा सकता है।
आइए अपने "berries" ऐरे की कॉपी फिर से बनाएं:
var berries = ["Strawberry", "Gooseberry", "Raspberry"]; var fruits = Array.from(berries);
यह समाधान, स्प्रेड ऑपरेटर सिंटैक्स की तरह, केवल दो लाइनों का कोड लेता है। यह ऐरे कॉपी करने का एक कुशल और संक्षिप्त तरीका है। अब, आइए अपने नए ऐरे की जांच करने के लिए टेस्ट चलाएं:
fruits.push("Pineapple"); console.log(berries); console.log(fruits);
हमारा कोड रिटर्न करता है:
[ "Strawberry", "Gooseberry", "Raspberry" ] [ "Strawberry", "Gooseberry", "Raspberry", "Pineapple" ]
हमारे ऐरे सफलतापूर्वक कॉपी हो गए हैं।
निष्कर्ष
जब आप जानते हैं कि कैसे, तो जावास्क्रिप्ट में ऐरे कॉपी करना आसान है।
असाइनमेंट ऑपरेटर ऐरे को कॉपी करने के लिए पर्याप्त नहीं है यदि आप ऐरे का अलग संस्करण बनाना चाहते हैं। ऐसा इसलिए है क्योंकि असाइनमेंट ऑपरेटर मौजूदा ऐरे का पॉइंटर बनाता है; यह नया ऐरे नहीं बनाता।
आप स्प्रेड ऑपरेटर, फॉर लूप, या Array.from() मेथड का उपयोग करके ऐरे की कॉपी बना सकते हैं। अब आप एक विशेषज्ञ की तरह जावास्क्रिप्ट में ऐरे कॉपी करने के लिए तैयार हैं।