Ruby on rails 需要嵌套循环打印ruby中两个数组的值
我有两个数组Ruby on rails 需要嵌套循环打印ruby中两个数组的值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有两个数组 ids = ["10.12.14","10.12.15"] iq = ["abc","pqr"] 我要下列格式的付款交单 New-IscsiTargetPortal -TargetPortalAddress 10.12.14 New-IscsiTargetPortal -TargetPortalAddress 10.12.15 Connect-IscsiTarget -NodeAddress abc -TargetPortalAddress 10.12.14 -IsPersist
ids = ["10.12.14","10.12.15"]
iq = ["abc","pqr"]
我要下列格式的付款交单
New-IscsiTargetPortal -TargetPortalAddress 10.12.14
New-IscsiTargetPortal -TargetPortalAddress 10.12.15
Connect-IscsiTarget -NodeAddress abc -TargetPortalAddress 10.12.14 -IsPersistent $True
Connect-IscsiTarget -NodeAddress xyz -TargetPortalAddress 10.12.15 -IsPersistent $True
我的代码看起来像
for i in ids
for j in iq
puts "New-IscsiTargetPortal -TargetPortalAddress #{i}"
puts "Connect-IscsiTarget -NodeAddress #{j} -TargetPortalAddress #{i} -IsPersistent $True"
end
end
但它复制了i和j的值:
New-IscsiTargetPortal -TargetPortalAddress 10.12.14
Connect-IscsiTarget -NodeAddress abc -TargetPortalAddress 10.12.14 -IsPersistent $True
New-IscsiTargetPortal -TargetPortalAddress 10.12.14
Connect-IscsiTarget -NodeAddress pqr -TargetPortalAddress 10.12.14 -IsPersistent $True
New-IscsiTargetPortal -TargetPortalAddress 10.12.15
Connect-IscsiTarget -NodeAddress abc -TargetPortalAddress 10.12.15 -IsPersistent $True
New-IscsiTargetPortal -TargetPortalAddress 10.12.15
Connect-IscsiTarget -NodeAddress pqr -TargetPortalAddress 10.12.15 -IsPersistent $True
您能帮助我进行嵌套for循环或如何获得所需的o/p吗?如果您可以依赖正在连接的两种数据(即10.12.14>“abc”),那么您可以在处理之前更好地组织数据,以使其更容易:
▶ result = ids.zip(iq).
▷ flat_map do |ip, name|
▷ ["New #{ip}", "Connect #{name} :: #{ip}"]
▷ end.partition { |s| s.start_with? 'New' }.flatten
#⇒ [
# [0] "New 10.12.14",
# [1] "New 10.12.15",
# [2] "Connect abc :: 10.12.14",
# [3] "Connect pqr :: 10.12.15"
# ]
▶ result.each(&method(:puts))
New 10.12.14
New 10.12.15
Connect abc :: 10.12.14
Connect pqr :: 10.12.15
h = [{
target: "10.12.14",
node: "abc"
},
{
target: "10.12.15",
node: "xyz"
}]
接下来,您需要专门为目标地址(数组a)循环一次,以获得前两行,然后为组合信息行循环第二次,如下所示:
for o in h
puts "New-IscsiTargetPortal -TargetPortalAddress #{o[:target]}"
end
for o in h
puts "Connect-IscsiTarget -NodeAddress #{o[:node]} -TargetPortalAddress #{i[:target]} -IsPersistent $True"
end
对于第一部分,您可以迭代
ids
:
ids.each do |i|
puts "New-IscsiTargetPortal -TargetPortalAddress #{i}"
end
对于第二部分,您可以使用以下命令成对组合ids
和iq
:
输出:
New-IscsiTargetPortal -TargetPortalAddress 10.12.14
New-IscsiTargetPortal -TargetPortalAddress 10.12.15
Connect-IscsiTarget -NodeAddress abc -TargetPortalAddress 10.12.14 -IsPersistent $True
Connect-IscsiTarget -NodeAddress pqr -TargetPortalAddress 10.12.15 -IsPersistent $True
使用
带有索引的每个\u
,并使用第一个数组的索引确定要在第二个数组上检索的元素
ids.each_with_index do |id, index|
puts "New-IscsiTargetPortal -TargetPortalAddress #{id}"
puts "Connect-IscsiTarget -NodeAddress #{iq[index]} -TargetPortalAddress #{id} -IsPersistent $True"
end
end
@mudasobwa感谢您发现了这一点,最近与js合作太多了。感谢您的帮助,这很有帮助。我相信“xyz”应该是“pqr”。
ids.each_with_index do |id, index|
puts "New-IscsiTargetPortal -TargetPortalAddress #{id}"
puts "Connect-IscsiTarget -NodeAddress #{iq[index]} -TargetPortalAddress #{id} -IsPersistent $True"
end
end