我目前正在开发一个 Ruby on Rails 程序,需要一些帮助来找出一种方法来获取嵌套哈希、提取值并将这些值连接到一个字符串中。
一个示例哈希是:
h={a:"da",b:{c:"test",e:{f:"bird"}},d:"duck"}
我希望输入显示为:
"datestbirdduck"
任何人都可以帮助提供可以做到这一点的方法。我很难找到任何适用于嵌套哈希的东西。
我目前正在开发一个 Ruby on Rails 程序,需要一些帮助来找出一种方法来获取嵌套哈希、提取值并将这些值连接到一个字符串中。
一个示例哈希是:
h={a:"da",b:{c:"test",e:{f:"bird"}},d:"duck"}
我希望输入显示为:
"datestbirdduck"
任何人都可以帮助提供可以做到这一点的方法。我很难找到任何适用于嵌套哈希的东西。
由于您的输入 ( h
) 是一个可以在其值中包含哈希的哈希,因此您可以实现该方法以使用递归从值中提取字符串:
input = {a: "da", b: {c:"test", e: {f: "bird"}}, d:"duck"}
def extract_values_from_hash(input)
return input unless input.is_a?(Hash)
input.flat_map { |_, v| extract_values_from_hash(v) }
end
extract_values_from_hash(input).join
# datestbirdduck
它的作用是接收哈希input
(本身。这样您就可以从初始方法参数中提取每个值。
请注意,如果您碰巧有这样的对象,则会提取输入中不是直接哈希的任何内容:
{a: "da", b: {c:"test", e: {f: "bird"}}, d:"duck", g: 1, h: [{i: "hola"}, {j: "chao"}]}
结果将是:
"datestbirdduck1{:i=>\"hola\"}{:j=>\"chao\"}"