我有多个看起来像这样的散列:
[{"name" => "name1", "folder" => "folder1", id => 1 },
{"name" => "name1", "folder" => "folder1", id => 2 },
{"name" => "name1", "folder" => "folder2", id => 3},
{"name" => "name2", "folder" => "folder1", id => 4}]
我的目标是拥有这样的东西:
{"name1" =>
[{"folder1" =>
[{"name" => "name1", "folder" => "folder1", id => 1 },
{"name" => "name1", "folder" => "folder1", id => 2 }] }
{"folder2" =>
[{"name" => "name1", "folder" => "folder2", id => 3}] }]
{"name2" =>
[{"folder 1" =>
[{"name" => "name2", "folder" => "folder1", id => 4}] }] }
我暂时没有找到能给出这种或类似结果的合适解决方案。
编辑:我试过那个和很多其他的,但从来没有找到拥有两层深度哈希的方法 a.group_by{|line| line["name"]}.each_value {|v| v. map {|线|行[“文件夹”]}}
最佳答案
这好像do what you want :
transformed_hash = initial_hash
.group_by { |x| x['name'] }
.map { |k, v| [k, v.group_by{ |x| x['folder'] }] }
.to_h
关于ruby-on-rails - Ruby 散列按多个值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914000/