Rubyでは、配列内の値をどのように見つけることができますか?
Rubyでは、配列内の値をどのように見つけることができますか?
回答:
私はあなたが特定の値が配列内に存在するかどうかを見つけようとしていると思います、そしてその場合は、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
Enumerable#select
いました#detect
が、まさに私が探していたものです。
array.select{}
配列内のすべての要素を調べ、条件に一致する要素を探します。array.find
代わりに、条件に一致する最初の要素を返します。だから、好ましくは、使用array.find{ |e| e == 3 }
後、array.select{ |e| e == 3 }.first
.find_index
何かあるかどうかわからないと言ったと思います.find
配列から1つの値を検索する場合は、次を使用しますArray#find
。
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
以下も参照してください。
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
e.include? 6 #=> true
配列に値が存在するかどうかを確認するには、#in?
ActiveSupportを使用するときにも使用できます。#in?
に応答するすべてのオブジェクトに対して機能します#include?
。
arr = [1, 6]
6.in? arr #=> true
Array#find
Rubyリファレンスには何も表示されません。他の人が言及しているので、Railsのものでなければなりません。
Enumerable
、 ruby-doc.org / core
このような?
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"
必要な要素のインデックスを返すか、配列に値が含まれていない場合はnilを返します。
この回答は、受け入れられた回答が現在書かれている質問に対応していないことに気付いたすべての人を対象としています。
質問は、配列内の値を見つける方法を尋ねます。受け入れられた答えは、値が配列に存在するかどうかを確認する方法を示しています。
を使用した例はすでにある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]
select
は、2009年に回答としてすでに提供されていましたが、もう少し良いサンプルスニペットを提供しました。考え直した後、先ほど言ったことを撤回します。
この質問には既に回答済みですが、いくつかの基準に基づいて配列内の要素をフィルターする方法を探してここに来ました。これが私の解決策の例です:を使用select
すると、「RUBY_」で始まるクラスのすべての定数が見つかります
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
更新:その間、私はArray#grepがはるかにうまく機能することを発見しました。上記の例では、
Class.constants.grep /^RUBY_/
トリックをしました。
Class.constants.grep /^RUBY_/
も、トリックを行いました。