比较 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.