Ruby 如何将哈希数组转换为哈希值数组?

Ruby 如何将哈希数组转换为哈希值数组?,ruby,arrays,Ruby,Arrays,我有一个哈希数组: [{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}] 如何将其转换为值数组: ["male", "male", "female"] 编辑:由@tadman指导。谢谢 在这种情况下 [{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].map(&:values).flatten 应该有用 它从每个散列中获取一个数组,然后展

我有一个哈希数组:

[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}]
如何将其转换为值数组:

["male", "male", "female"]
编辑:由@tadman指导。谢谢

在这种情况下

[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].map(&:values).flatten
应该有用

它从每个散列中获取一个数组,然后展平嵌套数组

[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].flat_map(&:values)

希望它有助于

一种考虑到其他可能关键点的通用方法:

list = [{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}]

# Collect the 'sex' key of each hash item in the list.
sexes = list.collect { |e| e['sex'] }
您可以“映射”数组中的元素,获取哈希值,然后将结果数组“展平”

[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].map{|h| h.values }
=> [["male"], ["male"], ["female"]]

[["male"], ["male"], ["female"]].flatten
=> ["male", "male", "female"]
在单行中,您可以:

[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].map{|h| h.values }.flatten
或:

文件:


无需在中间值上就地展平<代码>展平就可以了。@tadman Right.:)我刚刚考虑过,如果AdamNYC希望将它们保留在同一个数组中,那就
flant调用只影响
映射
操作的结果,不修改
arr
。这不会转换,只会打印。你遗漏了这件事的关键部分。这不是一个真正的答案,是吗?我确实写过他将在哪里收集它们。。。因此,在这里它是正确的,谢谢这里有几个其他的答案,提供了这个功能。这个非答案应该删除。我喜欢这种方法,以防有更多的钥匙,而不仅仅是想要的+1-1,在同一答案发布12分钟后提出答案。这更彻底,但这个确切的答案已经发布了三次。与时尚地迟到不同,这只是多余的。对不起,我不知道这是一场比赛。我是否应该快速写下lighting,以便下次获得一些积分?我试图给出一个好的答案,包括搜索其他东西。对不起,如果我不够快的话。这本身不是一场竞赛,这是一场提供最佳答案的竞赛,以效率和清晰度衡量,基本上是最像红宝石的。当然,第一个这样做是有帮助的,但通常有人会在很久以后发布,给出更深思熟虑、更全面的答案,并赢得这一天。一些操作人员在不知道什么是最佳答案的情况下获取第一个答案,因此您将看到所选答案的负分,而另一个答案的正分非常高。
[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].map{|h| h.values }
=> [["male"], ["male"], ["female"]]

[["male"], ["male"], ["female"]].flatten
=> ["male", "male", "female"]
[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].map{|h| h.values }.flatten
[{"sex"=>"male"}, {"sex"=>"male"}, {"sex"=>"female"}].map(&:values).flatten