2011-02-02 16 views
6

Qual è il modo migliore e per fare questo: ho due matrici:eliminare elementi di un array da determinati criteri

a=[['a','one'],['b','two'],['c','three'],['d','four']] 

e b=['two','three']

voglio cancellare matrici nidificate all'interno a che includono elementi in b , per ottenere questo:

[['a','one']['d','four'] 

Grazie.

risposta

14
a = [['a','one'],['b','two'],['c','three'],['d','four']] 
b = ['two','three'] 

a.delete_if { |x| b.include?(x.last) } 

p a 
# => [["a", "one"], ["d", "four"]] 
2
a=[['a','one'],['b','two'],['c','three'],['d','four']] 
b=['two','three']  
result=a.reject { |e| b.include?(e.first) or b.include?(e.last) } 
# result => [["a", "one"], ["d", "four"]] 
5

rassoc per il salvataggio!

b.each {|el| a.delete(a.rassoc(el)) } 
+1

Wow - Ruby ha un metodo per tutto - funky! –

Problemi correlati