从Ruby哈希数组中访问特定值

时间:2013-01-04 05:37:31

标签: ruby

我有一个像这样结构化的哈希数组

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

等。如何根据特定payer_id访问价格?我知道这个问题是基本的,但我无法弄明白。

1 个答案:

答案 0 :(得分: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]