【发布时间】:2021-06-04 08:58:08
【问题描述】:
我在尝试遍历两个哈希数组时遇到问题。 我的哈希看起来像:
h1= [
{"name"=>"postgresql", "version"=>29},
{"name"=>"java", "version"=>8},
{"name"=>"python", "version"=>3}
]
h2= [
{"name"=>"postgresql", "release"=>"postgresql-release", "url"=>"https://github.com/repo/postgresql-release"},
{"name"=>"java", "release"=>"java-release", "url"=>"https://github.com/repo/java-release"}
]
combined = []
在检查 h1 和 h2 中“name”字段的哈希值后,我需要将这两个哈希组合到一个名为 combined 的数组中,这样:
- if
h1["name"] == h2["name"]---> 保存名称、版本、版本和网址。 - 如果
h1["name"] != h2["name"](例如:在h1中找到python但在h2中找不到)--->保存名称,版本,发布= nil,url= nil
combined 数组应如下所示:
combined = [
{"name"=>"postgresql", "version"=>29, "release"=>"postgresql-release", "url"=>"https://github.com/repo/postgresql-release"},
{"name"=>"java", "version"=>8, "release"=>"java-release", "url"=>"https://github.com/repo/java-release"},
{"name"=> "python", "version"=>3, "release"=> nil, "url"=> nil}
]
我已经尝试了很多,并且总是有更多的迭代和/或在名称不同的情况下无法打印任何东西。
我的代码如下所示:
h1= [{"name"=>"postgresql", "version"=>29}, {"name"=>"java", "version"=>8}, {"name"=>"python", "version"=>3}]
h2= [{"name"=>"postgresql", "release"=>"postgresql-release", "url"=>"https://github.com/repo/postgresql-release"}, {"name"=>"java", "release"=>"java-release", "url"=>"https://github.com/repo/java-release"}]
combined = []
h1.each do |h1Key, h1Value|
h2.each do |h2Key, h2Value|
if h1["name"] == h2["name"]
combined << {"name"=> h1["name"], "version"=> h1["version"], "release"=> h2["release"], "url"=> h2["url"]}
else
combined << {"name"=> h1["name"], "version"=> h1["version"], "release"=> nil, "url"=> nil}
end
end
end
puts combined.to_s
我也无法正确比较 h1 和 h2 的值。
非常感谢您的帮助,因为我对 Ruby 还是很陌生,不幸的是我的逻辑并没有帮助我。
提前致谢! ^^
【问题讨论】:
标签: ruby