Ruby-在hash的特定字段/键中查找数据



我使用github api收集了github repo的所有标签的列表。假设我将它存储在一个名为"release_tags"的变量中。

例如:Data in 'released_tags' would be something similar to data displayed in https://api.github.com/repos/fastly/epoch/tags

我有一个数字0.3,我希望在该数据的名称字段的值中找到它,并想要最后一个/最新的包含/匹配名称。

预期结果:该数据有0.3.5、0.3.4、0.3.3、0.3.2、0.3.1和0.3.0,其中包含0.3。我正在尝试一种逻辑/简单的方法,通过名称字段搜索0.3,我得到了最新的,即在这种情况下,逻辑的输出应该是0.3.5,因为这是最新/最高的数字。如果名称字段只有0.3或0.3.0,那么输出应该是0.3或0.3.0

编辑:我能够找到解决方案,但有什么简单/快捷的方法吗?这是我的解决方案:

 tag_names = Array.new
  released_tags.each do |tag|
    if tag['name'].include? '0.3'
      tag_names << tag['name']
    end
  end
 p tag_names.first

考虑到您总是需要第一个匹配的结果,您可以使用find:

released_tags.find { |tag| tag['name'] =~ /^0.3/ }

或者,如果你不喜欢正则表达式:

released_tags.find { |tag| tag['name'].start_with?("0.3") }

最新更新