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

रूबी के Array#zip में महारत: कुशल सरणी जोड़ी और तुलना

मान लीजिए कि आप दो सरणियों की तुलना करना चाहते हैं, तत्व दर तत्व ताकि आप अंतर ढूंढ सकें।

या शायद आप हर इंडेक्स पर सबसे बड़ी संख्या ढूंढना चाहते हैं, या आप केवल कुंजियों की सूची और मानों की सूची को मर्ज करके एक हैश बनाना चाहते हैं…

…इसे करने का "कठिन तरीका" ऐसा कुछ दिखेगा।

उदाहरण:

 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 

यह काम पूरा करता है, लेकिन यह सुंदर नहीं है, है ना?

इसके अलावा, आपको यह समझने के लिए रुककर सोचना पड़ता है कि क्या हो रहा है।

यहीं Array#zip (और Enumerable#zip) काम आता है!

उदाहरण:

 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.zip(b) # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 

अहा! …बहुत बेहतर।

क्या आप सहमत नहीं हैं?

यदि हम zip से परिचित हैं तो हम तुरंत समझ जाएंगे कि क्या हो रहा है। और यदि हम नहीं हैं, तो डॉक्यूमेंटेशन (या इससे भी बेहतर, यह लेख!) का एक त्वरित पढ़ना इसे समझा देगा।

zip का उपयोग करने का एक और लाभ यह है कि हम इसे अन्य Enumerable मेथड्स के साथ आसानी से चेन कर सकते हैं।

उदाहरण के लिए, count मेथड की तरह:

 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.zip(b).count { |a,b| a == b } # 3 

यह कोड ठीक-ठीक गिनती लौटाता है कि कितने तत्व समान हैं और समान स्थिति में हैं।

एक और ट्रिक जिसका आप उपयोग कर सकते हैं, जैसा कि मैंने पहले उल्लेख किया था, कुंजियों की सूची और मानों की सूची को मर्ज करके एक हैश बनाना है।

उदाहरण:

 a = %w(bacon coconut walnuts) b = [100, 200, 300] a.zip(b).to_h # {"bacon"=>100, "coconut"=>200, "walnuts"=>300} 

एक और उदाहरण चाहिए?

ठीक है!

यहाँ है:

 letters = Array('a'..'z') shift = 3 translation_map = letters.zip(letters.rotate(shift)).to_h "hello".chars.map { |ch| translation_map[ch] }.join 

यह सीज़र सिफर एल्गोरिथम का एक फैंसी कार्यान्वयन है।

सारांश

आपने Array#zip मेथड के बारे में सीखा, जो आपको दो सरणियों को "मर्ज" करने और उसके साथ कुछ अच्छे ट्रिक्स करने की अनुमति देता है 🙂

यदि आपको यह पोस्ट पसंद आया तो इसे अपने पसंदीदा सोशल नेटवर्क पर शेयर करना न भूलें ताकि अधिक लोग इसे पढ़ सकें!

  1. JavaScript RegExp exec(): रेगेक्स मैच निष्पादित करें JavaScript RegExp exec(): रेगेक्स मैच निष्पादित करें

    RegExp.prototype.exec() मेथड स्ट्रिंग में मैच के लिए खोज करता है। मैच मिलने पर परिणाम एरे लौटाता है, अन्यथा null। g फ्लैग के साथ यह पुनरावृत्त खोज सक्षम करता है। उदाहरण { const result = pattern.exec(sampleStr); if (result) { sampleEle.innerHTML += ` <br> मिला:

  1. JavaScript getTime() मेथड JavaScript getTime() मेथड

    JavaScript में getTime() मेथड 1 जनवरी 1970 से बीते मिलीसेकंड की संख्या लौटाता है।उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <t

  1. JavaScript Sort() मेथड JavaScript Sort() मेथड

    JavaScript Sort() मेथड का उपयोग ऐरे को सॉर्ट करने के लिए किया जाता है। सॉर्टिंग का क्रम वर्णमाला, न्यूमेरिक, आरोही या अवरोही हो सकता है।उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="