[英]From an array of hashes, merge all array values of a specific hash key
我有以下數組:
[{:a => 'b', :b => ['z', 'a', ...]}, ..., {:a => 'z', :b => ['t', 'r', ...]}]
我想獲得一個與:b
鍵對應的所有數組值的合並數組,如下所示:
['z', 'a', 't', 'r', ... ]
( :b
將不包含任何重復項)
我嘗試了reduce(&:deep_merge)
,但是它似乎並沒有滿足我的要求。 最好使用Rails的“魔術”答案,但是香草紅寶石也很棒,也很受贊賞。
嘗試flat_map
。
x = [{:a => 'b', :b => ['z', 'a']}, {:a => 'z', :b => ['t', 'r']}]
x.flat_map { |e| e[:b] }
#=> ["z", "a", "t", "r"]
您可以使用each_with_object
方法:
array = [{:a=>'b',:b=>['z','a']},{:a=>'z', :b=>['t','r']}]
array.each_with_object([]) do |hash, memo|
memo.push(*hash[:b])
end
#=> ["z", "a", "t", "r"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.