जैसा कि हम जावास्क्रिप्ट सरणियों और वस्तुओं में संदर्भ से जानते हैं, लेकिन बाद में एक मूल सरणी को बदलने के बिना हम उन तरीकों की प्रतिलिपि कैसे बना सकते हैं?
इसे करने के कुछ तरीके यहां दिए गए हैं:
कल्पना कीजिए कि आपके पास यह कोड आपके पास है:
var arr = [1, 2, 3, 4, 5];
1) किसी फ़ंक्शन में सरणी के माध्यम से लूपिंग और इस तरह एक नया सरणी लौटाएं:
function newArr(arr) {
var i=0, res = [];
while(i<arr.length){
res.push(arr[i]);
i++;
}
return res;
}
2) स्लाइस विधि का उपयोग करते हुए, टुकड़ा ऐरे के स्लाइसिंग भाग के लिए है, यह आपके ऐरे के कुछ हिस्से को बिना ऑरिजिनल को छुए, स्लाइस में रख देगा, यदि एरे के आरंभ और अंत को निर्दिष्ट नहीं करता है, तो यह पूरी तरह से स्लाइस कर देगा सरणी और मूल रूप से सरणी की पूरी प्रतिलिपि बनाते हैं, इसलिए हम आसानी से कह सकते हैं:
var arr2 = arr.slice(); // make a copy of the original array
3) इसके अलावा संपर्क विधि, यह दो सरणी को मर्ज करने के लिए है, लेकिन हम सिर्फ एक सरणियों को निर्दिष्ट कर सकते हैं और फिर यह मूल रूप से नए संपर्क किए गए सरणी में मानों की एक प्रति बनाते हैं:
var arr2 = arr.concat();
4) इसके अलावा विधि को कड़ा और कठोर करें, यह अनुशंसित नहीं है, लेकिन एरे और ऑब्जेक्ट को कॉपी करने का एक आसान तरीका हो सकता है:
var arr2 = JSON.parse(JSON.stringify(arr));
5) Array.from विधि, यह व्यापक रूप से समर्थित नहीं है, उपयोग करने से पहले विभिन्न ब्राउज़रों में समर्थन की जांच करें:
const arr2 = Array.from(arr);
6) ECMA6 तरीका, पूरी तरह से समर्थित भी नहीं है, लेकिन यदि आप ट्रांसपाइल चाहते हैं तो babelJs आपकी मदद कर सकता है:
const arr2 = [...arr];
slice
औरsplice
संचालन और नए प्रसार ऑपरेटर हैं औरArray.from
बहुत धीमी गति से कार्यान्वयन है। Perfjs.fnfo