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
或:
文件:
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