Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में .sort () विधि के साथ समस्या को ठीक करें, केवल एक के बजाय दो सरणियाँ क्रमबद्ध करें

<घंटा/>

Array.prototype.sort() फ़ंक्शन की एक संपत्ति यह है कि यह एक इनप्लेस सॉर्टिंग एल्गोरिदम है, जिसका अर्थ है कि यह सॉर्ट करने के लिए सरणी की एक नई प्रतिलिपि नहीं बनाता है, यह किसी भी अतिरिक्त स्थान का उपयोग किए बिना सरणी को सॉर्ट करता है, जिससे इसे और अधिक कुशल बना दिया जाता है। प्रदर्शन करने वाला।लेकिन यह विशेषता कभी-कभी एक अजीब स्थिति की ओर ले जाती है।

इसे एक उदाहरण से समझते हैं। मान लें, हमारे पास कुछ स्ट्रिंग अक्षर के साथ एक नाम सरणी है, हम इस सरणी के क्रम को बरकरार रखना चाहते हैं और एक और सरणी चाहते हैं जिसमें नाम सरणी के समान तत्व हों लेकिन वर्णानुक्रम में क्रमबद्ध हों।

हम कुछ ऐसा कर सकते हैं -

const names = ['Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj'];
let sortedNames = names;
sortedNames = sortedNames.sort();
console.log(names);
console.log(sortedNames);

लेकिन जैसा कि हम जावास्क्रिप्ट में जानते हैं, सरणियाँ भी वस्तुएँ होती हैं और वस्तुएँ संदर्भ द्वारा कॉपी की जाती हैं न कि मूल्य से, इसलिए एक सरणी को छाँटने से दोनों सरणियाँ छाँट जाती हैं, जो हम स्पष्ट रूप से नहीं चाहते हैं।

समाधान

<मजबूत>1. नई सरणी प्रारंभ करते समय स्लाइस () का उपयोग करना

उदाहरण

const names = ['Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj'];
let sortedNames = names.slice();
sortedNames = sortedNames.sort();
console.log(names);
console.log(sortedNames);

स्लाइस () विधि वास्तव में एक उथली प्रतिलिपि लौटाती है, जिसे उस सरणी के एक नए सरणी में कॉपी किया जाता है जिसके साथ इसका उपयोग किया जाता है, यदि कोई तर्क प्रदान नहीं किया जाता है तो यह शुरू से अंत तक कॉपी करता है।

हालांकि यह विधि बहुत कुशल नहीं है क्योंकि इसमें एक नई सरणी शुरू करना शामिल है और केवल स्ट्रिंग / संख्या अक्षर की सरणी के साथ प्रभावी है, दूसरी विधि थोड़ी अधिक कुशल है और वस्तुओं की सरणी के साथ भी अच्छी तरह से काम करती है।

<मजबूत>2. JSON.stringify() / JSON.parse() . का उपयोग करना

उदाहरण

const names = ['Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj'];
let sortedNames = JSON.parse(JSON.stringify(names));
sortedNames = sortedNames.sort();
console.log(names);
console.log(sortedNames);

सरणी को JSON स्ट्रिंग में कनवर्ट करना और वापस एक सरणी में एक तरह से संकलक को संदर्भ द्वारा प्रतिलिपि बनाने के लिए मजबूर नहीं करता है।

कंसोल में दोनों विधियों का आउटपुट समान होगा -

आउटपुट

[ 'Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj' ]
[ 'Anshul', 'Dheeraj', 'Mukesh', 'Rakesh', 'Ram' ]

  1. जावास्क्रिप्ट ऐरे से () विधि

    जावास्क्रिप्ट की से () विधि का उपयोग किसी ऑब्जेक्ट से किसी ऑब्जेक्ट से एक लंबी संपत्ति या एक चलने योग्य वस्तु के साथ ऐरे ऑब्जेक्ट को वापस करने के लिए किया जाता है। वाक्य रचना इस प्रकार है - Array.from(obj, mapFunction, val) ऊपर, पैरामीटर obj एक सरणी में कनवर्ट करने के लिए ऑब्जेक्ट है, mapFunction

  1. जावास्क्रिप्ट सॉर्ट () विधि

    जावास्क्रिप्ट सॉर्ट () विधि का उपयोग किसी सरणी को सॉर्ट करने के लिए किया जाता है। छँटाई का क्रम वर्णानुक्रमिक, संख्यात्मक, आरोही या अवरोही हो सकता है। सॉर्ट () विधि के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .नमूना, .परिणाम {

  1. क्या हम दो सरणियों को एक जावास्क्रिप्ट ऑब्जेक्ट में बदल सकते हैं?

    दो सरणियों को एक JavaScript ऑब्जेक्ट में बदलने के लिए निम्नलिखित कोड है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title&g