是否可以仅根据键的位置(而不是它的值)将此散列转换为数组。I:我提前知道,第一个键永远是推动/阿尔法键,第二个键永远是一个国家(我希望将来能够随意改变)。
这个想法是将同样类型的服务器(Webserver)分组,这些服务器也在相同的环境(生产)中,但位于不同的农场(英国,美国)。
虽然任何关于如何做到这一点的建议都是受欢迎的,但是我很高兴知道我不会走进死胡同,我将无法解决.
下面是一些帮助我解释的视觉效果:
{
"PROD": {
"USA": {
"generic": [
"nginx-240"
],
"WEB": [
"nginx-210",
"nginx-241",
"nginx-211",
"nginx-209"
],
"APP": [
"tomcat-269",
"tomcat-255",
"tomcat-119",
"tomcat-124"
]
},
"UK": {
"WEB": [
"nginx-249",
"nginx-250",
"nginx-246",
"nginx-247",
"nginx-248"
],
"generic": [
"tomcat-302"
],
"APP": [
"tomcat-396",
"tomcat-156",
"tomcat-157"
]
}
},
"ALPHA": {
"USA": {
"WEB": [
"nginx-144",
"nginx-146",
"nginx-145",
"nginx-175",
"nginx-173"
],
"APP": [
"tomcat-204",
"tomcat-206"
]
}
}
}期望来自哈希中的最低级别的数据将分组在一起。
同样,我们的想法是,所有生产应用服务器(来自英国和美国)都按照以下模式组合在一起:
PROD_UK_APP将由"tomcat-396“、"tomcat-156”、"tomcat-157"表示,因为它们是树PROD->UK->applicationserver的最低分支。
[
[
[PROD_UK_APP],[PROD_USA_APP]
],
[
[PROD_UK_WEB],[PROD_USA_WEB]
]
]新名单..。
[
[
[ALPHA_USA_WEB]
],
[
[ALPHA_USA_APP],
[
[ 再一次,我们的想法是保持这种共性。这是几乎可以实现的,还是我可能需要某种程度的硬编码来确保它始终有效?这个想法是,如果明天英国变成日本,它仍将以完全相同的方式工作,与英国的应用程序和WEB层以及日本(从PROD中分离出来的ALPHA )进行比较。
编辑:我试图尝试对其进行排序:
def walk
a = []
myhash.each do |env, data|
data.each do |dc, tier|
tier.each do |x, y|
a << y
end
end
end
p a
end
[["nginx240"], ["nginx210", "nginx241", "nginx211", "nginx209"], ["tomcat269", "tomcat255", "tomcat119", "tomcat124"], ["nginx249", "nginx250", "nginx246", "nginx247", "nginx248"], ["tomcat302"], ["tomcat396", "tomcat156", "tomcat157"], ["nginx144", "nginx146", "nginx145", "nginx175", "nginx173"], ["tomcat204", "tomcat206"]]谢谢,
发布于 2017-10-24 22:08:47
我想我跟着你想要的,你应该得到你想要的东西:
myhash.values.each_with_object([]) do |by_country, out_arr|
by_country.values.each do |by_type|
out_arr << by_type.values
end
end它将返回:
[
[
[
"nginx-240"
],
[
"nginx-210",
"nginx-241",
"nginx-211",
"nginx-209"
],
[
"tomcat-269",
"tomcat-255",
"tomcat-119",
"tomcat-124"
]
],
[
[
"nginx-249",
"nginx-250",
"nginx-246",
"nginx-247",
"nginx-248"
],
[
"tomcat-302"
],
[
"tomcat-396",
"tomcat-156",
"tomcat-157"
]
],
[
[
"nginx-144",
"nginx-146",
"nginx-145",
"nginx-175",
"nginx-173"
],
[
"tomcat-204",
"tomcat-206"
]
]
]一片片
https://stackoverflow.com/questions/46918425
复制相似问题