जावास्क्रिप्ट ऐरे से डुप्लिकेट हटाना

जावास्क्रिप्ट ऐरे से डुप्लिकेट हटाना
जावास्क्रिप्ट ऐरे से डुप्लिकेट हटाना

जावास्क्रिप्ट में ऐरे विशिष्टता को समझना

जावास्क्रिप्ट में, यह सुनिश्चित करना कि किसी सरणी में केवल अद्वितीय मान हों, विभिन्न अनुप्रयोगों के लिए महत्वपूर्ण हो सकता है। हालाँकि इसे प्राप्त करने के कई तरीके हैं, कुछ विधियाँ विशिष्ट परिस्थितियों में विफल हो सकती हैं, जैसे शून्य की उपस्थिति।

इस लेख में, हम किसी सरणी से डुप्लिकेट को हटाने के लिए एक प्रोटोटाइप स्क्रिप्ट की जांच करेंगे। हम इसमें शून्य मान वाले मुद्दों की पहचान करेंगे और इसकी तुलना अधिक विश्वसनीय समाधान से करेंगे। इन अंतरों को समझकर, आप सीखेंगे कि जावास्क्रिप्ट में सरणी विशिष्टता को अधिक प्रभावी ढंग से कैसे संभालना है।

आज्ञा विवरण
new Set() एक सेट ऑब्जेक्ट बनाता है, जो आपको किसी भी प्रकार के अद्वितीय मान संग्रहीत करने देता है।
[...new Set(array)] किसी सेट को अद्वितीय मानों की सरणी में परिवर्तित करने के लिए स्प्रेड ऑपरेटर का उपयोग करता है।
Array.prototype.getUnique सरणी से अद्वितीय मान निकालने के लिए ऐरे प्रोटोटाइप पर एक नई विधि को परिभाषित करता है।
uniqueElements[this[i]] = this[i] विशिष्टता सुनिश्चित करने के लिए प्रत्येक तत्व को किसी ऑब्जेक्ट में एक कुंजी के रूप में संग्रहीत करता है।
for (let key in uniqueElements) परिणाम सरणी बनाने के लिए अद्वितीय एलिमेंट्स ऑब्जेक्ट की कुंजियों पर पुनरावृत्ति करता है।
const uniqueElements = {} अद्वितीय तत्वों को कुंजी के रूप में संग्रहीत करने के लिए एक खाली ऑब्जेक्ट को प्रारंभ करता है।

जावास्क्रिप्ट एरेज़ में डुप्लिकेट कैसे हटाएं

हमारे द्वारा प्रस्तुत पहली स्क्रिप्ट का उपयोग करता है new Set() सरणी विशिष्टता सुनिश्चित करने के लिए जावास्क्रिप्ट में ऑब्जेक्ट। ए Set मानों का एक संग्रह है जहां प्रत्येक मान अद्वितीय होना चाहिए। किसी सरणी को a में पास करके Set, हम स्वचालित रूप से डुप्लिकेट मानों को फ़िल्टर कर देते हैं। परिवर्तित करने के लिए Set किसी सरणी में वापस, हम स्प्रेड ऑपरेटर का उपयोग करते हैं [...new Set(array)]. यह विधि संक्षिप्त है और वांछित परिणाम कुशलतापूर्वक प्राप्त करने के लिए जावास्क्रिप्ट की अंतर्निहित कार्यक्षमताओं का लाभ उठाती है।

उदाहरण के लिए, यदि आपके पास शून्य सहित डुप्लिकेट संख्याओं वाली एक सरणी है, जैसे [1, 2, 2, 3, 4, 4, 5, 0, 0], कार्यक्रम getUniqueValues(array) केवल अद्वितीय मानों के साथ एक सरणी लौटाएगा: [1, 2, 3, 4, 5, 0]. यह विधि सीधी है और शून्य सहित सभी प्रकार के तत्वों को बिना किसी समस्या के संभालती है।

अद्वितीय सरणी मान सुनिश्चित करने के लिए एक कस्टम विधि

दूसरी स्क्रिप्ट एक कस्टम विधि को परिभाषित करती है Array.prototype बुलाया getUnique. यह विधि अद्वितीय तत्वों को ट्रैक करने के लिए किसी ऑब्जेक्ट का उपयोग करती है। विधि के भीतर, हम पहले एक खाली वस्तु को आरंभ करते हैं const uniqueElements = {} और एक खाली सरणी const resultArray = []. फिर हम a का उपयोग करके सरणी पर पुनरावृति करते हैं for लूप, प्रत्येक तत्व को एक कुंजी के रूप में संग्रहीत करता है uniqueElements यह सुनिश्चित करने के लिए ऑब्जेक्ट करें कि सभी कुंजियाँ अद्वितीय हैं।

आबाद करने के बाद uniqueElements वस्तु, हम दूसरे का उपयोग करते हैं for...in ऑब्जेक्ट की कुंजियों पर पुनरावृति करने के लिए लूप करें और प्रत्येक अद्वितीय कुंजी को अंदर धकेलें resultArray. अंत में, विधि वापस आ जाती है resultArray, जिसमें केवल अद्वितीय मान शामिल हैं। यह विधि विशेष रूप से शिक्षाप्रद है क्योंकि यह दिखाती है कि केवल अंतर्निहित कार्यों पर भरोसा किए बिना विशिष्टता को मैन्युअल रूप से कैसे प्रबंधित और लागू किया जाए, जिससे जावास्क्रिप्ट में डेटा संरचनाओं को संभालने की गहरी समझ मिलती है।

जावास्क्रिप्ट सरणियों में अद्वितीय मान सुनिश्चित करना

सेट का उपयोग करके जावास्क्रिप्ट विधि

function getUniqueValues(array) {
  return [...new Set(array)];
}

// Example usage:
const numbers = [1, 2, 2, 3, 4, 4, 5, 0, 0];
const uniqueNumbers = getUniqueValues(numbers);
console.log(uniqueNumbers);

एक कस्टम फ़ंक्शन के साथ एक सरणी में डुप्लिकेट हटाना

जावास्क्रिप्ट कस्टम प्रोटोटाइप विधि

Array.prototype.getUnique = function() {
  const uniqueElements = {};
  const resultArray = [];
  for (let i = 0; i < this.length; i++) {
    uniqueElements[this[i]] = this[i];
  }
  for (let key in uniqueElements) {
    resultArray.push(uniqueElements[key]);
  }
  return resultArray;
};

// Example usage:
const numbers = [1, 2, 2, 3, 4, 4, 5, 0, 0];
const uniqueNumbers = numbers.getUnique();
console.log(uniqueNumbers);

ऐरे डिडुप्लीकेशन तकनीकों में गहराई से उतरें

जावास्क्रिप्ट में किसी सरणी से डुप्लिकेट को हटाने के लिए एक अन्य महत्वपूर्ण तकनीक का उपयोग है filter के साथ संयोजन में विधि indexOf तरीका। इस विधि में सरणी पर पुनरावृत्ति करना और केवल उन तत्वों को शामिल करना शामिल है जिनकी पहली घटना उनकी वर्तमान स्थिति से मेल खाती है। यह सुनिश्चित करता है कि प्रत्येक तत्व को परिणामी सरणी में केवल एक बार शामिल किया गया है, डुप्लिकेट को प्रभावी ढंग से हटा दिया गया है।

उदाहरण के लिए, एक सरणी पर विचार करें [1, 2, 2, 3, 4, 4, 5, 0, 0]. का उपयोग करके array.filter((item, index) => array.indexOf(item) === index), आप डुप्लिकेट मानों को फ़िल्टर कर सकते हैं। यह दृष्टिकोण यह जाँच कर काम करता है कि क्या वर्तमान तत्व का सूचकांक उस तत्व के पहले घटना सूचकांक के समान है। यदि ऐसा है, तो तत्व अद्वितीय है और नई सरणी में शामिल है।

जावास्क्रिप्ट ऐरे डिडुप्लीकेशन के बारे में सामान्य प्रश्न

  1. किसी सरणी से डुप्लिकेट हटाने का सबसे प्रभावी तरीका क्या है?
  2. इसका उपयोग करना Set यह सबसे कुशल तरीकों में से एक है क्योंकि इसमें O(n) की समय जटिलता है।
  3. क्या मैं इसका उपयोग कर सकता हूँ filter डुप्लिकेट हटाने की विधि?
  4. हाँ, संयोजन filter साथ indexOf डुप्लिकेट को हटाने का एक सामान्य तरीका है।
  5. क्यों करता है prototype विधि शून्य के साथ विफल?
  6. मूल स्क्रिप्ट शून्य के साथ विफल हो जाती है क्योंकि for (i = 0; e = this[i]; i++) इसे असत्य मानकर शून्य पर रुक जाता है।
  7. विशिष्टता के लिए मैं किसी सरणी में विभिन्न डेटा प्रकारों को कैसे संभाल सकता हूं?
  8. इसका उपयोग करना Set प्रत्येक मान अद्वितीय है यह सुनिश्चित करके विभिन्न डेटा प्रकारों को कुशलतापूर्वक संभालता है।
  9. इस्तेमाल करने से क्या फायदा new Set() अन्य तरीकों पर?
  10. new Set() संक्षिप्त है और अतिरिक्त तर्क की आवश्यकता के बिना सभी प्रकार के मूल्यों को संभालता है।
  11. क्या मैं सभी सरणियों में अद्वितीय विधि जोड़ सकता हूँ?
  12. हाँ, इसमें एक विधि जोड़कर Array.prototype, आप इसे सभी सरणियों के लिए उपलब्ध करा सकते हैं।
  13. संशोधित करने का नकारात्मक पक्ष क्या है Array.prototype?
  14. संशोधित करना Array.prototype यदि अन्य स्क्रिप्ट भी इसे संशोधित करती हैं तो टकराव हो सकता है।
  15. क्या मूल सरणी को बदले बिना विशिष्टता सुनिश्चित करने का कोई तरीका है?
  16. हाँ, जैसे तरीके new Set() और filter मूल को संरक्षित करते हुए एक नई सरणी बनाएं।

जावास्क्रिप्ट ऐरे डिडुप्लीकेशन पर अंतिम विचार

सरणियों से डुप्लिकेट हटाने की विभिन्न तकनीकों को समझकर, आप अपने विशिष्ट उपयोग के मामले के लिए सबसे उपयुक्त विधि चुन सकते हैं। चाहे उपयोग कर रहे हों Set सरलता और दक्षता के लिए या गहरी समझ के लिए कस्टम तरीकों के लिए, इन दृष्टिकोणों में महारत हासिल करने से आपके जावास्क्रिप्ट कौशल में वृद्धि होती है। शून्य मान जैसे विशेष मामलों को संभालना, आपके समाधानों में मजबूती सुनिश्चित करता है।