我有一个像这样结构化的哈希数组
[{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
等。如何根据特定payer_id
访问价格?我知道这个问题是基本的,但我无法弄明白。
答案 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]
。