如何检查包括?数组中至少有一个元素,ruby on rails

时间:2015-02-09 10:11:52

标签: ruby-on-rails ruby arrays

我可以查看包含吗?数组中至少有一个元素与ruby在轨道上?这是我的例子:

a = 1234
b = [1,5,6,7,8....]
if a.include?b[0] == true
   app => return true
if a.include?b[0] == true and a.include?b[1] == false and a.include?b[2] == false and ......
   app still return true

在真实的应用程序中,我不能调用b [0],b [1],b [2] ......就像那样,那么,我该如何检查包含?在rails app中至少有一个数组元素?请帮帮我:)。

3 个答案:

答案 0 :(得分:2)

a1 = a.to_s.chars.map(&:to_i)
# => [1, 2, 3, 4] 
b.any? {|i| a1.include?(i) }
# => true

<强>更新

Ruby 2.4有一个Integer#digits。所以你可以做到

a1 = a.digits
b.any? {|i| a1.include?(i) }

答案 1 :(得分:1)

在这样的情况下,基本集合代数就派上用场了。在您的情况下,您要检查两个集合(此处实现为数组)的交集是否为空,即它们是否具有任何共同的元素。

在Ruby中,您可以使用set操作:

a = "12345".chars.map(&:to_i)
b = [1,5,6,7,8]

intersection = a & b
has_common_elements = intersection.any?

您可以在Ruby documentation阅读有关交叉点运算符的更多信息。当你在那时,你也应该阅读union operator,它补充了交叉点算子。

答案 2 :(得分:0)

digits = a.to_s.chars.map(&:to_i)
(digits - b).empty?