我可以查看包含吗?数组中至少有一个元素与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中至少有一个数组元素?请帮帮我:)。
答案 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?