我有一些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")
NoMethodError
,因为如果没有匹配项,Enumerable#find
会返回nil
。 - falsetruh.has_key?('lastBuiltRevision')
应该足够了,为什么要用fetch
? - Victor Moroznil
?您可以考虑使用h = actions.find { |h| h.has_key? 'lastBuiltRevision'}; h ? h['lastBuiltRevision']['SHA1'] : nil
。 - Cary Swoveland