1

How to merge hash with array values to one array:

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

after merge should be:

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

2 回答 2

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

当然,您可以对键执行相同的操作。您在这里需要的唯一原因flatten是因为这些值本身就是数组,所以h.values单独返回[["one1", "one2"], ["two1", "two2"]]

此外,作为仅供参考,merge 在 Ruby 中意味着不同(并且非常有用)的东西

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

于 2013-04-18T12:29:31.060 回答
2
h.flat_map &:last
=> ["one1", "one2", "two1", "two2"]
于 2013-04-18T12:59:52.690 回答