在Array中查找值

如何在Ruby中使用Ruby 1.8.7在数组中find值?

我猜你正在尝试查找数组内是否存在某个值,如果是这种情况,可以使用Array#include?(value):

a = [1,2,3,4,5] a.include?(3) # => true a.include?(9) # => false 

如果你的意思是别的,请检查Ruby Array API

使用Array#select将会给你一个符合条件的元素数组。 但是,如果您正在寻找一种将元素从符合条件的数组中取出的方法, Enumerable#detect将会是更好的方法:

 array = [1,2,3] found = array.select {|e| e == 3} #=> [3] found = array.detect {|e| e == 3} #=> 3 

否则,你将不得不做一些尴尬的事情:

 found = array.select {|e| e == 3}.first 

喜欢这个?

 a = [ "a", "b", "c", "d", "e" ] a[2] + a[0] + a[1] #=> "cab" a[6] #=> nil a[1, 2] #=> [ "b", "c" ] a[1..3] #=> [ "b", "c", "d" ] a[4..7] #=> [ "e" ] a[6..10] #=> nil a[-3, 3] #=> [ "c", "d", "e" ] # special cases a[5] #=> nil a[5, 1] #=> [] a[5..10] #=> [] 

或者像这样?

 a = [ "a", "b", "c" ] a.index("b") #=> 1 a.index("z") #=> nil 

看手册 。

你可以使用Array.select或Array.index来做到这一点。

使用:

myarray.index "valuetoFind"

这将返回你想要的元素的索引,否则,如果你的数组不包含值。

我知道这个问题已经被回答了,但是我来到这里寻找一种方法来根据一些标准来过滤Array中的元素。 所以这里是我的解决scheme的例子:使用select ,我find所有常量在Class中以“RUBY_”开头

 Class.constants.select {|c| c.to_s =~ /^RUBY_/ } 

更新:在此期间,我发现Array#grep工作得更好。 对于上面的例子,

 Class.constants.grep /^RUBY_/ 

做的伎俩。

这个答案适用于所有认识到接受答案的人没有解决目前所写的问题。

问题是如何在数组中find一个值。 接受的答案显示了如何检查数组中是否存在一个值。

已经有一个使用index的例子,所以我提供了一个使用select方法的例子。

 1.9.3-p327 :012 > x = [1,2,3,4,5] => [1, 2, 3, 4, 5] 1.9.3-p327 :013 > x.select {|y| y == 1} => [1] 

感谢您的回复。

我这样做:

 puts 'find' if array.include?(value) 

如果你想从数组中find一个值,使用Array#find

 arr = [1,2,6,4,9] arr.find {|e| e%3 == 0} # return 6 arr.select {|e| e%3 == 0} # return [6]