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"]
h.values.flatten
# => ["one1", "one2", "two1", "two2"]
当然,您可以对键执行相同的操作。您在这里需要的唯一原因flatten
是因为这些值本身就是数组,所以h.values
单独返回[["one1", "one2"], ["two1", "two2"]]
。
此外,作为仅供参考,merge
在 Ruby 中意味着不同(并且非常有用)的东西。
如果您想确保它仅展平一个级别(根据@tokland 的评论),您可以提供一个可选参数,flatten
例如 with flatten(1)
。
h.flat_map &:last
=> ["one1", "one2", "two1", "two2"]