it-swarm-ja.tech

配列の値を見つける

Ruby 1.8.7を使用して配列の値を見つけるにはどうすればよいですか?

108
Lucas Renan

特定の値が配列内に存在するかどうかを検索しようとしていると推測していますが、その場合は、Array#include?(value)を使用できます。

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

他のことを意味する場合は、 Ruby Array API を確認してください

111
Mark Westling

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
68
Will Warner

このような?

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

マニュアルを参照

23
Ewan Todd

Array.select または Array.index を使用してそれを行うことができます。

20
andyp

配列から1つの値を検索する場合は、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?

#includes?を除く配列に値が存在するかどうかを調べるには、ActiveXで #in? を使用することもできます。これは、#include?に応答するオブジェクトに対して機能します。

arr = [1, 6]
6.in? arr
#=> true
15
fangxing

つかいます:

myarray.index "valuetoFind"

目的の要素のインデックスを返します。配列に値が含まれていない場合はnilを返します。

15

この回答は、受け入れられた回答が現在書かれている質問に対応していないことに気付いたすべての人を対象としています。

この質問は、配列内の値をfindにする方法を尋ねています。受け入れられた答えは、配列に値existsがあるかどうかを確認する方法を示しています。

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]
9
Mike S

この質問にはすでに答えられていますが、いくつかの基準に基づいて配列内の要素をフィルタリングする方法を探してここに来ました。したがって、ここに私のソリューションの例があります:selectを使用して、「Ruby_」で始まるクラスのすべての定数を見つけます

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

PDATE:それまでの間、Array#grepの方がはるかに優れていることがわかりました。上記の例では、

Class.constants.grep /^Ruby_/

トリックをしました。

8
mydoghasworms

配列メソッドを使用できます。

すべての配列メソッドを表示するには、配列でmethods関数を使用します。例えば、

a = ["name", "surname"] 
a.methods

ところで、配列の値をチェックするために別の方法を使用できますa.include?("name")を使用できます。

1
Foram Thakral

返信いただきありがとうございます。

私はこれが好きでした:

puts 'find' if array.include?(value)
1
Lucas Renan