在ruby中收集数组的哈希值

时间:2012-05-08 13:38:27

标签: ruby hash

h = {1=>[1,2,3], 2=>[4,5,6]}
new_arr = []
h.each_value {|arr|
  new_arr.concat(arr)
}

这样可行,但是更像红宝石的方式呢?

所有值都是数组,但不应修改每个数组的元素。

4 个答案:

答案 0 :(得分:10)

这是怎么回事?

h.values.flatten

答案 1 :(得分:4)

您可以使用reduce:

h.values.reduce(&:+)

答案 2 :(得分:1)

略显神秘

h.flat_map(&:last)

稍微冗长

h.flat_map{|_, value| value}

答案 3 :(得分:0)

如果要获取哈希值数组,请使用哈希#值。

new_arr = h.values