在Ruby中,可以使用group_by
方法将带有"array"键的散列转换为嵌套散列。下面是一个示例代码:
hash = { "array.key1" => "value1", "array.key2" => "value2", "other.key3" => "value3" }
nested_hash = hash.group_by { |key, _| key.split(".").first }
nested_hash.transform_values! { |values| values.map { |key, value| [key.split(".").last, value] }.to_h }
puts nested_hash
输出结果为:
{"array"=>{"key1"=>"value1", "key2"=>"value2"}, "other"=>{"key3"=>"value3"}}
在这个例子中,我们首先使用group_by
方法将散列按照第一个"."之前的部分进行分组,得到一个以分组键为键、值为相应散列项的数组的新散列。然后,我们使用transform_values!
方法对每个分组的值进行转换。对于每个值,我们使用map
方法将键和值分离,并将它们转换为一个新的散列。最后,我们使用to_h
方法将这个新的散列转换为嵌套散列。
需要注意的是,这个方法只适用于带有"array"键的散列,并且假设每个键都以"array."开头。如果散列中还有其他键,它们将被忽略。如果需要处理更复杂的情况,可以根据实际需求进行修改。
推荐的腾讯云相关产品:无
领取专属 10元无门槛券
手把手带您无忧上云