我有一个以.pluck(:id, :title)
结尾的Ruby on Rails查询,并给了我一个充满2维数组的数组,如下所示:
array = [[11145, "string1"], [11223, "string1"], [11205, "string2"], [11127, "string2"], [11080, "string3"], [11158, "string3"]]
我想按标题对ID进行分组,以获得此结果:
[[[11145, 11223], "string1"], [[11205, 11127], "string2"], [[11080, 11158], "string3"]]
我试图直接在SQL查询中连接ID或操纵数组,但没有管理我的预期结果。
欢迎任何帮助。预先感谢。
快速解决方案:
array.group_by(&:last).transform_values { |e| e.map(&:first) }.to_a
Enumerable#group_by
Enumerable#group_by
另一个变种是:
Hash#transform_values
Hash#transform_values
array.each_with_object(Hash.new {|h,k| h[k] = [] }) do |obj, res|
res[obj.last] << obj.first
end.to_a
UPD我不知道您的查询看起来如何,但是如果您使用PG,则可以尝试使用以下结尾: