Mar*_*ing 112
我猜你正试图找出数组中是否存在某个值,如果是这种情况,你可以使用Array #include?(value):
a = [1,2,3,4,5]
a.include?(3) # => true
a.include?(9) # => false
Run Code Online (Sandbox Code Playgroud)
如果您的意思是其他,请检查Ruby Array API
Wil*_*ner 70
使用Array#select将为您提供符合条件的元素数组.但是,如果您正在寻找一种方法从阵列中获取符合您标准的元素,那么这Enumerable#detect将是一个更好的方法:
array = [1,2,3]
found = array.select {|e| e == 3} #=> [3]
found = array.detect {|e| e == 3} #=> 3
Run Code Online (Sandbox Code Playgroud)
否则你必须做一些尴尬的事情:
found = array.select {|e| e == 3}.first
Run Code Online (Sandbox Code Playgroud)
Ewa*_*odd 23
像这样?
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] #=> []
Run Code Online (Sandbox Code Playgroud)
或者像这样?
a = [ "a", "b", "c" ]
a.index("b") #=> 1
a.index("z") #=> nil
Run Code Online (Sandbox Code Playgroud)
fan*_*ing 18
如果要从数组中找到一个值,请使用 Array#find
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
6.in?
Run Code Online (Sandbox Code Playgroud)
要查找数组中是否存在值,除了#includes?,您还可以使用#in?ActiveSupport,它适用于任何响应的对象#include?:
arr = [1, 6]
6.in? arr
#=> true
Run Code Online (Sandbox Code Playgroud)
这个答案适用于每个人,他们认识到已接受的答案并未解决目前所写的问题.
该问题询问如何在数组中查找值.接受的答案显示了如何检查数组中是否存在值.
已经有一个使用示例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]
Run Code Online (Sandbox Code Playgroud)
我知道这个问题已经得到了解答,但我来到这里寻找一种基于某些标准过滤数组中元素的方法.所以这是我的解决方案示例:使用select,我发现Class中以"RUBY_"开头的所有常量
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
Run Code Online (Sandbox Code Playgroud)
更新:与此同时,我发现Array#grep工作得更好.对于上面的例子,
Class.constants.grep /^RUBY_/
Run Code Online (Sandbox Code Playgroud)
做了伎俩.
| 归档时间: |
|
| 查看次数: |
173000 次 |
| 最近记录: |