Find value in Array
如何使用Ruby1.8.7在数组中查找值?
我猜你是想找出数组中是否存在某个值,如果是这样的话,你可以使用array include?(值):
1 2 3 | a = [1,2,3,4,5] a.include?(3) # => true a.include?(9) # => false |
如果您的意思是其他的,请检查Ruby数组API
使用
1 2 3 | array = [1,2,3] found = array.select {|e| e == 3} #=> [3] found = array.detect {|e| e == 3} #=> 3 |
否则你必须做一些尴尬的事情,比如:
1 | found = array.select {|e| e == 3}.first |
这样地?
1 2 3 4 5 6 7 8 9 10 11 12 | 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] #=> [] |
或者像这样?
1 2 3 | a = ["a","b","c" ] a.index("b") #=> 1 a.index("z") #=> nil |
请参阅手册。
您可以使用array.select或array.index执行此操作。
用途:
它将返回所需元素的索引,如果数组不包含该值,则返回nil。
如果要从数组中找到一个值,请使用
1 2 3 4 5 | arr = [1,2,6,4,9] arr.find {|e| e%3 == 0} #=> 6 arr.select {|e| e%3 == 0} #=> [ 6, 9 ] 6.in? |
要查找数组中是否存在值(除
1 2 3 | arr = [1, 6] 6.in? arr #=> true |
这个答案适用于所有意识到接受的答案并不能像现在写的那样解决问题的人。
问题是如何在数组中查找值。接受的答案显示如何检查数组中是否存在值。
已经有一个使用
1 2 3 4 | 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] |
我知道这个问题已经被回答了,但我来这里是为了寻找一种基于某些条件筛选数组中元素的方法。下面是我的解决方案示例:使用
1 | Class.constants.select {|c| c.to_s =~ /^RUBY_/ } |
更新:同时,我发现数组grep的工作效果更好。对于上述示例,
1 | Class.constants.grep /^RUBY_/ |
做了这个把戏。
谢谢回复。
我确实喜欢这样:
1 | puts 'find' if array.include?(value) |
您可以使用数组方法。
要查看所有数组方法,请使用带数组的
1 2 | a = ["name","surname"] a.methods |
另外,您可以使用不同的方法来检查数组中的值您可以使用