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

时间:2016-12-03 00:07:11

标签: ruby string jruby

我有两个不同的字符串数组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

我该如何处理?

2 个答案:

答案 0 :(得分:3)

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

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

请参阅Ruby demo

答案 1 :(得分:0)

我认为这里使用的最易读的方法可能是startwith?,但是如果你知道某个键不能是另一个键的子串。

查看是否所有按键都已到位:

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