从散列数组中,合并特定散列键的所有数组值

mah*_*ich 0 ruby arrays ruby-on-rails hashmap

我有以下数组:

[{:a => 'b', :b => ['z', 'a', ...]}, ..., {:a => 'z', :b => ['t', 'r', ...]}]
Run Code Online (Sandbox Code Playgroud)

我想获得一个所有数组值的合并数组,对应于这样的键:b:

['z', 'a', 't', 'r', ... ]
Run Code Online (Sandbox Code Playgroud)

(:b不会有任何重复)

我试过了reduce(&:deep_merge),但它似乎没有做我想要的.Rails'魔术'的答案将是首选,但香草Ruby也会很棒并且受到赞赏.

ssc*_*eck 5

试试flat_map.

x = [{:a => 'b', :b => ['z', 'a']}, {:a => 'z', :b => ['t', 'r']}]
x.flat_map { |e| e[:b] }
#=> ["z", "a", "t", "r"]
Run Code Online (Sandbox Code Playgroud)