在Rails中,将哈希压缩为嵌套哈希的最佳方法是什么

kid*_*rax 6 ruby hash ruby-on-rails

说我有这个:

[
  { :user_id => 1, :search_id => a},
  { :user_id => 1, :search_id => b},
  { :user_id => 2, :search_id => c},
  { :user_id => 2, :search_id => d}
]
Run Code Online (Sandbox Code Playgroud)

我想最终得到:

[
  { :user_id => 1, :search_id => [a,b]},
  { :user_id => 2, :search_id => [c,d]}
]
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

Vic*_*roz 7

确实非常奇怪的要求.无论如何

[ { :user_id => 1, :search_id => "a"},
  { :user_id => 1, :search_id => "b"},
  { :user_id => 2, :search_id => "c"},
  { :user_id => 2, :search_id => "d"} ] \
    .map{ |h| h.values_at(:user_id, :search_id) } \
    .group_by(&:first) \
    .map{ |k, v| { :user_id => k, :search_id => v.map(&:last) } }
Run Code Online (Sandbox Code Playgroud)