我有一个值“狗”和一个数组[“猫”、“狗”、“鸟”]。

如何在不循环的情况下检查数组中是否存在它?是否有一种简单的方法来检查该值是否存在?


当前回答

在下面尝试

(['Cat', 'Dog', 'Bird'] & ['Dog']).any?

其他回答

['Cat', 'Dog', 'Bird'].detect { |x| x == 'Dog'}
=> "Dog"
!['Cat', 'Dog', 'Bird'].detect { |x| x == 'Dog'}.nil?
=> true

在下面尝试

(['Cat', 'Dog', 'Bird'] & ['Dog']).any?

Try

['Cat', 'Dog', 'Bird'].include?('Dog')

您可以尝试:

示例:如果阵列中存在猫和狗:

(['Cat','Dog','Bird'] & ['Cat','Dog'] ).size == 2   #or replace 2 with ['Cat','Dog].size

而不是:

['Cat','Dog','Bird'].member?('Cat') and ['Cat','Dog','Bird'].include?('Dog')

注:成员?包括?都是一样的。

这可以在一条线上完成工作!

这是另一种方法:使用Array#索引方法。

它返回数组中元素第一次出现的索引。

例如:

a = ['cat','dog','horse']
if a.index('dog')
    puts "dog exists in the array"
end

index()也可以采用一个块:

例如:

a = ['cat','dog','horse']
puts a.index {|x| x.match /o/}

这将返回数组中包含字母“o”的第一个单词的索引。