将具有数组值的哈希合并到一个数组

时间:2013-04-18 12:23:42

标签: ruby merge

如何将散列与数组值合并到一个数组:

h = {
    one: ["one1", "one2"],
    two: ["two1", "two2"]
}
合并后

应为:

["one1","one2","two1","two2"]

2 个答案:

答案 0 :(得分:2)

h.values.flatten
# => ["one1", "one2", "two1", "two2"]

当然,你可以为密钥做同样的事情。您在此处需要flatten的唯一原因是因为这些值本身就是数组,因此仅h.values将返回[["one1", "one2"], ["two1", "two2"]]

此外,正如仅供参考,merge means something different (and pretty useful) in Ruby

如果你想确保它只展平一个级别(根据@tokland的评论),你可以为flatten提供一个可选参数,例如flatten(1)

答案 1 :(得分:2)

h.flat_map &:last
=> ["one1", "one2", "two1", "two2"]