检查数组是否包含其他数组中的数字

时间:2013-11-30 14:03:42

标签: ruby arrays list

我有这段代码:

tickets = Array.new(10) {rand(99999)+1}

list = []
(list << '%05i' % (rand(99999)+1)).uniq! while list.length < 5
number1, number2, number3, number4, number5 = list

如何查看ticket是否有中奖号码?有五个中奖号码,因为每个号码都有不同的奖品。

2 个答案:

答案 0 :(得分:4)

Ruby的数组包括&

  

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

     

它使用hash和eql来比较元素?提高效率的方法。

ary1 = [1,2,3]
ary2 = [2,4,6]

ary1 & ary2 # => [2]

这适用于任何类型的对象:

ary1 = %w[a b c]
ary2 = %w[c d e]

ary1 & ary2 # => ["c"]

所以,如果你有一张门票清单和一张中奖票:

tickets = [1,2,3]
winning_ticket = [2]

tickets & winning_ticket # => [2]

答案 1 :(得分:1)

可能如下所示:

[number1, number2, number3, number4, number5].find{|e| tickets.include? e }