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