Ruby能否在哈希或数组中实现深度搜索特定键?

2026-04-11 15:471阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计306个文字,预计阅读时间需要2分钟。

Ruby能否在哈希或数组中实现深度搜索特定键?

我有一些Ruby代码从Jenkins获取一个包含n个项目的JSON数组。我想找到名为lastBuiltRevision的项目密钥。我知道可以通过遍历数组来实现,使用`actions.each`,如下所示:

rubyactions.each do |action| if action[lastBuiltRevision] # 找到密钥 endend

我有一些 ruby代码从Jenkins获取一个包含n个项目数组的json.我想要的项目有一个名为“lastBuiltRevision”的密钥

我知道我可以这样循环遍历数组

actions.each do |action| if action["lastBuiltRevision"] lastSuccessfulRev = action["lastBuiltRevision"]["SHA1"] break end end

但这种感觉非常笨重,没有我在使用ruby时常常感受到的魔力.

我现在只修补了大约一个星期,我觉得我可能会遗漏一些东西来让这更容易/更快.

有这样的事吗?或者是我可以做的手动迭代?

我有点希望有类似的东西

lastSuccessfulRev = action.match("lastBuildRevision/SHA1") 使用 Enumerable#find

actions = [ {'dummy' => true }, {'dummy' => true }, {'dummy' => true }, {'lastBuiltRevision' => { "SHA1" => "123abc" }}, {'dummy' => true }, ] actions.find { |h| h.has_key? 'lastBuiltRevision' }['lastBuiltRevision']['SHA1'] # => "123abc"

UPDATE

如果没有匹配的项目,上面的代码将抛出NoMethodError.如果您不想获得异常,请使用以下代码.

Ruby能否在哈希或数组中实现深度搜索特定键?

rev = actions.find { |h| h.has_key? 'lastBuiltRevision' } rev = rev['lastBuiltRevision']['SHA1'] if rev

本文共计306个文字,预计阅读时间需要2分钟。

Ruby能否在哈希或数组中实现深度搜索特定键?

我有一些Ruby代码从Jenkins获取一个包含n个项目的JSON数组。我想找到名为lastBuiltRevision的项目密钥。我知道可以通过遍历数组来实现,使用`actions.each`,如下所示:

rubyactions.each do |action| if action[lastBuiltRevision] # 找到密钥 endend

我有一些 ruby代码从Jenkins获取一个包含n个项目数组的json.我想要的项目有一个名为“lastBuiltRevision”的密钥

我知道我可以这样循环遍历数组

actions.each do |action| if action["lastBuiltRevision"] lastSuccessfulRev = action["lastBuiltRevision"]["SHA1"] break end end

但这种感觉非常笨重,没有我在使用ruby时常常感受到的魔力.

我现在只修补了大约一个星期,我觉得我可能会遗漏一些东西来让这更容易/更快.

有这样的事吗?或者是我可以做的手动迭代?

我有点希望有类似的东西

lastSuccessfulRev = action.match("lastBuildRevision/SHA1") 使用 Enumerable#find

actions = [ {'dummy' => true }, {'dummy' => true }, {'dummy' => true }, {'lastBuiltRevision' => { "SHA1" => "123abc" }}, {'dummy' => true }, ] actions.find { |h| h.has_key? 'lastBuiltRevision' }['lastBuiltRevision']['SHA1'] # => "123abc"

UPDATE

如果没有匹配的项目,上面的代码将抛出NoMethodError.如果您不想获得异常,请使用以下代码.

Ruby能否在哈希或数组中实现深度搜索特定键?

rev = actions.find { |h| h.has_key? 'lastBuiltRevision' } rev = rev['lastBuiltRevision']['SHA1'] if rev