2011-05-16 4 views
2

J'ai actuellement ceci:recherche si une valeur existe dans un tableau Ruby

cart = [{"40"=>[{"size"=>"1", "count"=>1, "variation"=>nil, "style"=>"3"}]}, {"40"=>[{"size"=>"2", "count"=>1, "variation"=>nil, "style"=>"3"}]}] 

Comment puis-je rechercher ce tableau et savoir si « 40 » existe?

+0

Qu'avez-vous essayé? –

+3

Exister de quelle façon? Techniquement parlant, "40" n'est pas un membre de votre tableau. –

+0

cart [0] .first [0] == "40" construit maintenant cela dans un bloc cart.each. Je suppose qu'il fait référence à la clé à cordes "40". –

Répondre

9

utilisation Enumerable#any:

item_in_cart = cart.any? { |item| item.has_key?("40") } 
#=> true/false 
7

Si vous voulez trouver si « 40 » est une clé dans l'un de vos éléments de tableau, vous pouvez faire:

cart.detect{|i| i.has_key?("40")} 
2

Vous pouvez également faire

cart.each do |c| 
    if c.first[0] == "40" 
    match = true 
    end 
end 

ou beaucoup plus propre

match = cart.any? {|c| c.first[0] == "40" } 
Questions connexes