假设我有一个如下所示的数组:
[
[["str1"],["val1"],["val2"]],
[["str2"], ["val1"], ["val2"], ["val3"]]
]
有没有办法让我得到一个看起来像这样的哈希:
{
"str1" => [["val1"],["val2"]],
"str2" => [["val1"],["val2"],["val3"]]
}
最佳答案
a.map { |a| [a.first.first, a.drop(1)] }.to_h
# or
a.each_with_object({}) {|a, h| h[a.first.first] = a.drop(1) }
#=> {
# "str1"=>[["val1"], ["val2"]],
# "str2"=>[["val1"], ["val2"], ["val3"]]
# }
如果您不想让每个元素都在一个单独的数组中:
Hash[a.map(&:flatten).map { |a| [a.first, a.drop(1)] }]
#=> {"str1"=>["val1", "val2"], "str2"=>["val1", "val2", "val3"]}
关于ruby-on-rails - 获取散列键的嵌套数组的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40431616/