1

我目前正在开发一个 Ruby on Rails 程序,需要一些帮助来找出一种方法来获取嵌套哈希、提取值并将这些值连接到一个字符串中。

一个示例哈希是:

h={a:"da",b:{c:"test",e:{f:"bird"}},d:"duck"}

我希望输入显示为:

"datestbirdduck"

任何人都可以帮助提供可以做到这一点的方法。我很难找到任何适用于嵌套哈希的东西。

4

1 回答 1

1

由于您的输入 ( 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\"}"
于 2021-05-06T12:34:27.517 回答