如何检查数组中的元素是否存在于另一个数组中



我有两个不同的字符串array1array2,我想找出 array1中的元素是否也存在于array2中,而不修改array1中的元素,但是中的值是array1包括额外的字符,包括结肠:

array1 = ["unit 1 : Unit 1","unit 2 : Unit 2","unit 3 : Unit 3","test : Test", "system1"]
array2 = ["unit 1","unit 2","unit 3","test"]

我尝试使用include?,但它不起作用。

array1.each do |element|
    #see if element exists in array 2
    if array2.include? element
         #print the name of that element
         puts element
    end
end

我将如何处理?

修复方法,您可以使用space : space拆分element,并获取first块进行检查。而不是if array2.include? element使用

if array2.include? element.split(' : ').first

请参阅Ruby Demo

# Gather the prefixes from array1, without modifying array1:
array1_prefixes = array1.map { |s| s.split(" : ").first }
# Figure out which elements array1 and array2 have in common
common_elements = array1_prefixes & array2
# => ["unit 1", "unit 2", "unit 3", "test"]

此解决方案取决于数组#&运算符,执行集合交叉。

我认为这里使用的最可读的方法可能是startwith?,但是如果您知道键不能是另一个密钥的子字符串。

查看所有键是否到位:

array2.all? do |item|
  array1.any?{|keyval| keyval.startwith? item }
end

相关内容

  • 没有找到相关文章

最新更新