2012-01-19 12 views

risposta

17

Ecco un modo che mi viene in mente.

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

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

sup con downvote? – Anurag

+2

Perché non limitarsi a fare la destrutturazione nel parametro di blocco? –

+0

@ JörgWMittag - Non sapevo che la destrutturazione degli argomenti dell'array fosse possibile all'interno del blocco. – Anurag

-2

provare qualcosa di simile:

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

@intersezione dovrebbe essere [ 'd', 'e'].

Intersezione: restituisce un nuovo array contenente elementi comuni ai due array, senza duplicati.

Si può anche provare alcuni dei trucchi rubino come la seguente:

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

Questo non restituisce quello che il PO voleva. –

2

Si può fare qualcosa di simile per ottenere esattamente quello che vuoi:

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

Questo dovrebbe fare il trucco:

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

zip crea un array di coppie costituite da ogni elemento da entrambi gli array in quella posizione. Immagina di incollare i due array uno accanto all'altro.

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

Il elemento saggio comparatore si ottiene con il rubino metodo oggetto Array zip.

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

È inoltre possibile utilizzare .Raccogliere

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

Puoi usare 'collect' piuttosto che' map'? Wow! –

+0

'collect' è semplicemente un alias per' map'. [Array # raccogliere] (http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-collect) –

Problemi correlati