在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]