我想在Ruby中比较两个数组,并打印任何常见元素。使用想象中的“比较”,我想:
arr1 = [1, 2, 3, 4, 5]
arr2 = [1, 3, 5, 7, 9]
arr1.compare(arr2) #=> [1, 3, 5]
或其他一些方法,它迭代arr1
的每个元素,并尝试查找与arr2
的任何元素匹配。
答案 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]