【发布时间】:2019-11-13 04:27:27
【问题描述】:
我这几天一直在寻找解决此问题的方法,希望有人能提供帮助。鉴于此数据结构:
'foo' => {
'bar' => [
{
'baz' => {'faz' => '1.2.3'},
'name' => 'name1'
},
{
'baz' => {'faz' => '4.5.6'},
'name' => 'name2'
},
{
'baz' => {'faz' => '7.8.9'},
'name' => 'name3'
}
]
}
我需要找到以“4.”开头的“faz”的值,而不是使用每个。我必须使用“4”。 value 作为哈希的键,我将在循环“bar”时创建(如果我还不知道 '4.' 的值,显然我不能这样做),而且我不想循环两次。
理想情况下,会有一个优雅的单行解决方案将值“4.5.6”返回给我。
我找到了this article,但它并没有解决这个数据结构的全部复杂性,并且给出的唯一答案太冗长了;循环两次解决方案更具可读性。我在 Rails 4 上使用 Ruby 2.3,但无法升级。有没有 Ruby 大师可以指导我?
【问题讨论】:
-
foo之前需要一个左大括号。我猜你也希望foo和bar成为文字(例如,’foo’和’bar’)。当您使用它时,将哈希分配给一个变量(例如,h = { ‘foo’=>...}),以便读者可以在答案和 cmets 中引用该变量而无需定义它。 -
h['foo']['bar'].find { |hh| hh['baz']['faz'].start_with? '4.' }['baz']['faz']?呐! -
为什么是 Rails 标签?
标签: ruby ruby-on-rails-4 data-structures