在Ruby中,可以使用递归函数来扁平化嵌套哈希。下面是一个示例代码:
def flatten_hash(hash, prefix = '')
flat_hash = {}
hash.each do |key, value|
new_key = prefix.empty? ? key.to_s : "#{prefix}.#{key}"
if value.is_a?(Hash)
flat_hash.merge!(flatten_hash(value, new_key))
else
flat_hash[new_key] = value
end
end
flat_hash
end
这个函数接受一个嵌套的哈希作为输入,并返回一个扁平化的哈希。它使用递归来处理嵌套的哈希,对于每个键值对,如果值是一个哈希,则递归调用函数来处理该子哈希;否则,将键值对添加到扁平化的哈希中。
以下是一个示例用法:
nested_hash = {
name: 'John',
age: 30,
address: {
street: '123 Main St',
city: 'New York',
country: 'USA'
}
}
flat_hash = flatten_hash(nested_hash)
puts flat_hash.inspect
输出结果为:
{
"name"=>"John",
"age"=>30,
"address.street"=>"123 Main St",
"address.city"=>"New York",
"address.country"=>"USA"
}
这个函数可以帮助你在Ruby中扁平化嵌套的哈希。对于更复杂的嵌套结构,你可以根据需要进行适当的修改。
领取专属 10元无门槛券
手把手带您无忧上云