2016-09-03 4 views
0

さんは次のように私は、キーの同じセットでハッシュの配列を持っているとしましょう:事は、私はActiveRecordをのようないくつかのクールなコールをしたいのですが、ある アナログ 『どこで』平野Rubyの配列のため

array = [ 
    {attr1: val1, attr2: val2}, 
    {attr1: val3, attr2: val4} 
] 
'ここでは特定の要素について上記の配列を検索します。

array.where(attr1: val1) 

のようなものがあり、条件を満たすすべての要素が返されます。単純なRubyを使用します。

はい、いつも良い古い.eachがありますが、ここではペダルを金属のルビーのように使いましょう。

ありがとうございます!

答えて

4

ルビーにはfindselectがあります(それぞれ1つまたは複数の結果)。

selected = array.select do |item| 
    item[:attr1] == 'something' 
end 

selectブロックにarrayの各要素を通過し、ブロックtruthy値を返すあるものを選ぶであろう。 findも同様ですが、ブロックが真理値を返す最初の要素を返します。

+0

用語は「真実」です:) –

+0

実際、同じ操作は異なるコミュニティでは異なる名前と呼ばれます。関係代数では、SQL、XQuery、およびLINQでは* Selection *または* Restriction *と呼ばれ、「標準」と呼ばれ、最も一般的に使用されている名前は「filter」ですが、Smalltalkでは'select'と呼ばれるRubyはこれを同じものと呼び、' find_all'に別名を付けます。異なる名前に慣れるのに役立ちます(例: * Projection *(リレーショナル代数)、 'Select'(SQL、XQuery、LINQ - 注:SmalltalkやRubyでは' select 'と同じではありません)、 'transform'(C++)、' collect'スモールトーク、Ruby)、 'map'(" standard ") –

+0

@SergioTulentsev :-)が更新されました。 –

関連する問題