2

私はこのように構造化されたハッシュの配列を持っています

[{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}] 

特定の価格にアクセスするにはどうすればよいpayer_idですか? この質問は基本的なことですが、わかりません。

4

1 に答える 1

4

あなたはこれを行うことができます

payers = [{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
payer_id = 2

payers.detect { |payer| payer[:payer_id] == payer_id }.try(:[], :price)
# => 30

以前detectは、id に一致する最初の支払人を取得してから、その価格を取得していました。支払人が一致しなかった場合は、nil返されたのでtry、価格を取得するために使用できるため、支払人が見つからなくてもコードでエラーが発生しません。
tryは ActiveSupport の一部ですので、使用しない場合は に置き換え.try(:[], :price)[:price]ください。

于 2013-01-04T05:42:09.047 に答える