uniq
. के साथ विधि आप एक सरणी से सभी डुप्लिकेट तत्वों को हटा सकते हैं।
आइए देखें कि यह कैसे काम करता है!
यदि आपके पास इस तरह की एक सरणी है :
n = [1,1,1,2,3,4,5]
जहां नंबर 1
दोहराया गया है।
कॉलिंग uniq
इस सरणी पर अतिरिक्त को हटा देता है और अद्वितीय संख्याओं के साथ एक नई सरणी देता है।
उदाहरण :
n.uniq # [1,2,3,4,5]
ध्यान दें कि uniq
नहीं बदलेगा n
(मूल सरणी), इसलिए हमें या तो uniq!
. पर कॉल करने की आवश्यकता है , या नई सरणी को सहेजने के लिए।
उदाहरण :
unique_numbers = n.uniq
बहुत आसान है, है ना?
लेकिन बहुत से लोग नहीं जानते कि uniq
एक ब्लॉक लेता है।
एक ब्लॉक के साथ, आप और अधिक उन्नत कर सकते हैं चीजें।
मुझे समझाने दो…
एक ब्लॉक के साथ रूबी यूनीक विधि का उपयोग कैसे करें
जब आप uniq
. को कॉल करते हैं , यह आपके सरणी तत्वों से हैश बनाकर काम करता है।
हैश में प्रत्येक तत्व एक कुंजी बन जाता है।
क्योंकि हैश कुंजियाँ अद्वितीय हैं, हम हैश में सभी कुंजियों की एक सूची प्राप्त कर सकते हैं, यह सूची अद्वितीय तत्वों के साथ हमारी नई सरणी बन जाती है।
अब :
अगर आप किसी चीज़ को अद्वितीय बनाना चाहते हैं, तो आप एक ब्लॉक पास कर सकते हैं।
यहां एक उदाहरण दिया गया है :
fruits = %w(orange apple banana)
"नारंगी" और "केला" में समान लंबाई के 6 वर्ण हैं।
यदि हम uniq
का उपयोग करते हैं इस तरह :
fruits.uniq(&:size) # ["orange", "apple"]
फिर हम "केला" छोड़ते हैं क्योंकि जब हम स्ट्रिंग्स की उनके आकार से तुलना करते हैं तो यह एक डुप्लिकेट होगा।
एक और उदाहरण :
objects = [1, 2, "a", "b", :c, :d] objects.uniq(&:class)
यह आपको कक्षा के अनुसार अद्वितीय वस्तुओं के साथ एक सरणी देता है:
[1, "a", :c]
क्या आप इसकी ताकत देखते हैं?
जब आप किसी ब्लॉक को uniq
. पर पास करते हैं , आप वास्तव में यह परिभाषित करने में सक्षम हैं कि किन नियमों से किसी चीज़ को अद्वितीय माना जाता है।
अनेक शर्तों के साथ Uniq का उपयोग कैसे करें
आप कई शर्तों का उपयोग कर सकते हैं!
यहां बताया गया है :
मान लें कि आपके पास एक User
है वर्ग, इसके साथ:
age
name
country
आप एक ही उम्र के प्रति देश में केवल एक व्यक्ति चाहते हैं।
एक ब्लॉक के साथ आसान :
[david, petter, raphael].uniq { |person| [person.age, person.country] }
इस कोड के साथ, कुछ अद्वितीय माने जाने से पहले दोनों स्थितियों का मिलान होना चाहिए।
यह कैसे काम करता है?
ब्लॉक के बिना, वस्तु हैश कुंजी बन जाती है।
एक ब्लॉक के साथ, प्राप्त मूल्य हैश कुंजी बन जाता है, और वस्तु हैश मान बन जाती है।
फिर…
रूबी मान लेता है और उन्हें एक नई सरणी के रूप में लौटाता है।
ये सिर्फ कार्यान्वयन विवरण हैं, लेकिन मुझे ये बहुत दिलचस्प लगते हैं इसलिए मैंने सोचा कि मैं इन्हें आपके साथ साझा करूंगा।
सारांश
आपने uniq
. के बारे में जान लिया है रूबी में विधि! वास्तव में इसका उपयोग कैसे करना है, यह क्यों उपयोगी है और यह कैसे काम करता है।
अब इस विधि से अभ्यास करें ताकि आप इसे याद रख सकें।
पढ़ने के लिए धन्यवाद!