0

我在我的 Rails 应用程序中有一个集合内的嵌套哈希,我试图以可枚举的方式访问一个键的所有值。

所以我有一个看起来像这样的集合(不是我的键和值的实际名称)

my_set=[{:foo=>"lion", :boolean1=>true, :boolean2=>false, :boolean3=>true},
         {:foo=>"monkey", :boolean1=>false, :boolean2=>true, :boolean3=>true},
         {:foo=>"elephant", :boolean1=>false, :boolean2=>true, :boolean3=>true}
         ]

我希望能够遍历 foo 的所有值。有没有比以下更好的方法?

foo_array=[]
my_set.each do |hash|
  foo_array<<hash[:foo]
end

在我的集合中访问 :foo 的所有值时,我无法找到任何东西,只能在访问嵌套枚举中的单个元素时找到任何东西,我知道该怎么做。谢谢你。

4

2 回答 2

2

我认为最简单的方法是:

foo_array = my_set.map { |hash| hash[:foo] }
于 2013-07-23T00:28:46.537 回答
1

首先,您的定义my_set无效。

解决这个问题,我会使用:

my_set=[
  {:foo=>"lion", :boolean1=>true, :boolean2=>false, :boolean3=>true},
  {:foo=>"monkey", :boolean1=>false, :boolean2=>true, :boolean3=>true},
  {:foo=>"elephant", :boolean1=>false, :boolean2=>true, :boolean3=>true}
]

foo_array = my_set.map{ |h| h[:foo] } # => ["lion", "monkey", "elephant"]

您的代码也可以正常工作:

foo_array=[]
my_set.each do |hash|
  foo_array<<hash[:foo]
end
foo_array # => ["lion", "monkey", "elephant"]

这只是一种不同的方式。

于 2013-07-23T00:29:04.237 回答