比较Ruby中的数组并打印常用元素

时间:2015-10-04 06:20:00

标签: ruby

我想在Ruby中比较两个数组,并打印任何常见元素。使用想象中的“比较”,我想:

arr1 = [1, 2, 3, 4, 5]
arr2 = [1, 3, 5, 7, 9]

arr1.compare(arr2) #=> [1, 3, 5]

或其他一些方法,它迭代arr1的每个元素,并尝试查找与arr2的任何元素匹配。

3 个答案:

答案 0 :(得分:6)

嗯......我不是一个法官,为什么不使用Array#&方法?

  

Set Intersection - 返回一个新数组,其中包含两个数组共有的元素,不包括任何重复项。订单将从原始数组中保留。

arr1 = [1, 2, 3, 4, 5]
arr2 = [1, 3, 5, 7, 9]
arr1 & arr2 # => [1, 3, 5]

答案 1 :(得分:0)

arr1 = [1, 2, 3, 4, 5]
arr2 = [1, 3, 5, 7, 9]

arr1.each do |x|
  if (arr2.include?(x))
    print "#{x} "
  end
end

答案 2 :(得分:0)

作为Myst的解决方案并不优雅,但值得考虑。

#VALUE!

更高效的解决方案,在Cary Swoveland的评论之后。

irb(main):001:0> arr1
=> [1, 2, 3, 4, 5]
irb(main):002:0> arr2
=> [1, 3, 5, 7, 9]
irb(main):003:0> arr1.select{|x| arr2.include?(x)}
=> [1, 3, 5]