簡體   English   中英

從哈希數組中,合並特定哈希鍵的所有數組值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM