比较 Ruby 中的数组
Compare arrays in Ruby
我有一组完全限定的域名:
["filer1.abc.com", filer2.abc.com, filer3.xyz.com]
我有另一个包含主机名的数组:
["filer1", "filer3"]
我必须比较这两个数组,如果主机名存在于 fqdn 中,那么我需要从第一个数组中获取 fqdn。例如,"filer1"
存在于 "filer1.abc.com"
中,因此我需要获取值 "filer1.abc.com"
。 "filer3"
存在于 "filer3.xyz.com"
中,所以我需要获取值 "filer3.xyz.com"
。
感谢帮助。
["filer1.abc.com", filer2.abc.com, filer3.xyz.com].map.each_with_index {|vserver, indx| vserver.id.include? host_names[indx] unless host_names[indx].nil?}}
我得到 [true, nil, nil, nil]
,但我实际上需要 fqdn 的值,例如 ["filer1.abc.com"]
。
fqdn_array = ["filer1.abc.com", "filer2.abc.com", "filer3.xyz.com"]
hostnames = ["filer1", "filer3"]
result = fqdn_array.keep_if{|fqdn| (hostnames - fqdn.split('.')).length < hostnames.length}
# => ["filer1.abc.com", "filer3.xyz.com"]
Array#keep_if
遍历数组并保留块为真的所有元素。在该块中,我将您的 fqdn 在点处拆分为一个数组。然后我从主机名数组中减去它。如果结果比原始数组长度短,我找到了一个 fqdn,其中包含您的一个主机名和条件 returns true.
我有一组完全限定的域名:
["filer1.abc.com", filer2.abc.com, filer3.xyz.com]
我有另一个包含主机名的数组:
["filer1", "filer3"]
我必须比较这两个数组,如果主机名存在于 fqdn 中,那么我需要从第一个数组中获取 fqdn。例如,"filer1"
存在于 "filer1.abc.com"
中,因此我需要获取值 "filer1.abc.com"
。 "filer3"
存在于 "filer3.xyz.com"
中,所以我需要获取值 "filer3.xyz.com"
。
感谢帮助。
["filer1.abc.com", filer2.abc.com, filer3.xyz.com].map.each_with_index {|vserver, indx| vserver.id.include? host_names[indx] unless host_names[indx].nil?}}
我得到 [true, nil, nil, nil]
,但我实际上需要 fqdn 的值,例如 ["filer1.abc.com"]
。
fqdn_array = ["filer1.abc.com", "filer2.abc.com", "filer3.xyz.com"]
hostnames = ["filer1", "filer3"]
result = fqdn_array.keep_if{|fqdn| (hostnames - fqdn.split('.')).length < hostnames.length}
# => ["filer1.abc.com", "filer3.xyz.com"]
Array#keep_if
遍历数组并保留块为真的所有元素。在该块中,我将您的 fqdn 在点处拆分为一个数组。然后我从主机名数组中减去它。如果结果比原始数组长度短,我找到了一个 fqdn,其中包含您的一个主机名和条件 returns true.