2012-01-19 17 views
12

मैं दो सरणियों है:मैं दो सरणी की तत्व-वार तुलना कैसे करूं?

a == b 

रिटर्न:

[1,0,1] या की तरह कुछ

a = [1,2,3] 
b = [1,4,3] 

एक तत्व के लिहाज से रूबी में तुलना विधि मैं कुछ इस तरह कर सकता है ऐसा है कि है [TRUE,FALSE,TRUE]। इस तरह

उत्तर

17

यहाँ एक ही रास्ता है कि मैं के बारे में सोच सकते हैं।

a = [1, 2, 3] 
b = [1, 4, 3] 

a.zip(b).map { |x, y| x == y } # [true, false, true] 
+0

डाउनवोट के साथ सुपर? – Anurag

+2

क्यों न केवल ब्लॉक पैरामीटर में विनाशकारी है? –

+0

@ जोर्गडमिट्टाग - मुझे नहीं पता था कि ब्लॉक के भीतर सरणी तर्कों का विनाश संभव था। – Anurag

-2

कोशिश कुछ:

@array1 = ['a', 'b', 'c', 'd', 'e'] 
@array2 = ['d', 'e', 'f', 'g', 'h'] 
@intersection = @array1 & @array2 

@intersection अब [ 'डी', 'ई'] होना चाहिए।

छेड़छाड़-दो डुबकी वाले दो सरणी के लिए सामान्य तत्व युक्त एक नई सरणी देता है।

तुम भी निम्नलिखित की तरह गहरे लाल रंग का चाल से कुछ की कोशिश कर सकते हैं:

array1 = ["x", "y", "z"] 
array2 = ["w", "x", "y"] 
array1 | array2 # Combine Arrays & Remove Duplicates(Union) 
=> ["x", "y", "z", "w"] 

array1 & array2 # Get Common Elements between Two Arrays(Intersection) 
=> ["x", "y"] 


array1 - array2 # Remove Any Elements from Array 1 that are 
       # contained in Array 2 (Difference) 
=> ["z"] 
+1

यह वापस नहीं करता है क्या ओ पी चाहता था .collect उपयोग कर सकते हैं। –

2

आप कुछ इस तरह कर सकते हैं आप वास्तव में क्या चाहते हैं:

array1.zip(array2).map { |a, b| a == b } 

जिप प्रत्येक तत्व से मिलकर जोड़े में से एक सरणी बनाता है:

[1,2,3].zip([1,4,3]).map { |a,b| a == b } 
=> [true, false, true] 
2

इस चाल करना चाहिए उस स्थिति में दोनों सरणी से। दोनों तरफ से दो सरणी gluing चमक की कल्पना करो।

3
a = [1,2,3] 
b = [1,4,3] 
a.zip(b).map { |pair| pair[0] <=> pair[1] } 
=> [0, -1, 0] 

तत्व के लिहाज से तुलनाzip रूबी सरणी वस्तु विधि के साथ हासिल की है।

a = [1,2,3] 
b = [1,4,3] 
a.zip(b) 
=> [[1, 1], [2, 4], [3, 3]] 
4

तुम भी

a.zip(b).collect {|x,y| x==y } 
=> [true, false, true] 
+5

आप 'मानचित्र' के बजाय 'संग्रह 'का उपयोग कर सकते हैं? वाह! –

+0

'संग्रह' बस 'मानचित्र' के लिए एक उपनाम है। [सरणी # इकट्ठा] (http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-collect) –

संबंधित मुद्दे