2011-02-16 12 views

Respuesta

61

Usted puede hacer esto con intersección matriz:

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

@intersection ahora debe estar [ 'd', 'e']. A continuación, puede hacer lo siguiente:

<% if [email protected]? %> 
    <%= @intersection.size %> Matches Found. 
<% else %> 
    No Matches Found. 
<% end %> 
+1

Esto eliminaría los duplicados aunque .. – Trip

0
class Array 
    def dup_hash 
    inject(Hash.new(0)) { |h,e| h[e] += 1; h }.select { 
     |k,v| v > 1 }.inject({}) { |r, e| r[e.first] = e.last; r } 
    end 
end 

Primero que acaba de añadir dos matrices

@array_sum = @array1 + @array2 

output = [a,b,c,d,e,d,e,f,g,h] 

@array_sum.dub_hash => {d => 2, e => 2} 

O marca esta How to count duplicates in Ruby Arrays

+0

Esto será útil si tiene más de 2 matrices – kriysna

0

Para encontrar el número de coincidencias totales entre las matrices, agrega ellos juntos, luego restan el conjunto único. La diferencia entre la longitud de la matriz de superconjunto y el conjunto uniq será el recuento de las coincidencias de la segunda matriz en la primera. Este método funciona mejor si a2 es un conjunto único.

a1 = ['a','b','c','d','d','d'] 
a2 = ['a','d'] 

superset = (a1 + a2) 
subset = superset.uniq 

matches = superset.count - subset.count 
Cuestiones relacionadas