0

我写了以下内容:

Tab = [{"quiche"=>{"pepper"=>"10gr","cheeze"=>"50gr"}},{"pizza"=>{"tomato"=>"80gr","cheese"=>"100gr"}}]

这是一个由两个哈希组成的数组,每个哈希都包含一个哈希。我想知道数组中是否有pizza配方。我发现的唯一一件事就是这样做:

Tab.each {|meal| meal.each{|key,val| puts key}}
quiche
pizza

然后我可以做一个测试,看看关键是不是我要找的值。但我很确定这是一种肮脏的做法。

我尝试应用一些方法,例如:Tab.include?("pizza"),但它false每次都会返回,因为它正在查看里面的两个元素Tab

{"quiche"=>{"pepper"=>"10gr", "cheeze"=>"50gr"}}
{"pizza"=>{"tomato"=>"80gr", "cheese"=>"100gr"}}

{"quiche"=>{"pepper"=>"10gr", "cheeze"=>"50gr"}}不是"quiche"。请有人帮助我。我找不到任何解决方案。

4

2 回答 2

5

在 ruby​​ 文档中,对这个问题非常有用的东西列在 Enumerable 类中。根据您想要找到它的严格程度,您有几个选择,但是

Tab.any?{|recipe| recipe.keys.include?("pizza")}

应该管用。

于 2013-05-22T21:20:59.447 回答
2

您可以查看这些方法 -Hash#assocHash#has_key?

Tab = [{"quiche"=>{"pepper"=>"10gr","cheeze"=>"50gr"}},{"pizza"=>{"tomato"=>"80gr","cheese"=>"100gr"}}]

Tab.any? {|h| h.assoc("pizza") } #=> true
Tab.any? {|h| h.has_key?("pizza") } #=> true
于 2013-05-23T04:49:10.517 回答